2012-07-31 5 views
5

Cuando uso Try/Catch, ¿hay alguna manera como If/Else de ejecutar código si no se detecta ningún error y no Catch?Ejecute el código si no captura en Try/Catch

try 
{ 
    //Code to check 
} 
catch(Exception ex) 
{ 
    //Code here if an error 
} 

//Code that I want to run if it's all OK ?? 

finally 
{ 
    //Code that runs always 
} 
+3

¿Por qué no acaba de agregar su código al final de la prueba? –

+1

Porque puede desear que el resto del código arroje excepciones para ser capturado por el manejo externo de excepciones, y no por este bloque try/catch interno. En cuyo caso, la mejor manera de hacer esto (que yo sepa) es usar un bool. – John

Respuesta

18

Agregue el código al final de su bloque try. Obviamente, usted sólo ha de llegar allí si no era una excepción antes:

try { 
    // code to check 

    // code that you want to run if it's all ok 
} catch { 
    // error 
} finally { 
    // cleanup 
} 

Probablemente debería cambiar su captura en una manera que tan solo capturar las excepciones que se pueden esperar y no todo de plano, que puede incluir excepciones arrojado en »código que desea ejecutar si todo está bien«.

5

Simplemente colóquelo después del código que puede arrojar una excepción.

Si se lanza una excepción, no se ejecutará, si no se lanza, se ejecutará.

try 
{ 
    // Code to check 
    // Code that I want to run if it's all OK ?? <-- here 
} 
catch(Exception ex) 
{ 
    // Code here if an error 
} 
finally 
{ 
    // Code that runs always 
} 
9

Si lo necesita para ejecutar siempre si su código try tiene éxito, puesto que al final de su bloque try. Se ejecutará siempre que el código anterior en su bloque try se ejecute sin excepción.

try 
{ 
    // normal code 

    // code to run if try stuff succeeds 
} 
catch (...) 
{ 
    // handler code 
} 
finally 
{ 
    // finally code 
} 

Si necesita tratamiento de excepciones alternativa para usted el código "succeded", siempre se puede anidar sus try/capturas:

try 
{ 
    // normal code 

    try 
    { 
     // code to run if try stuff succeeds 
    } 
    catch (...) 
    { 
     // catch for the "succeded" code. 
    } 
} 
catch (...) 
{ 
    // handler code 
    // exceptions from inner handler don't trigger this 
} 
finally 
{ 
    // finally code 
} 

Si su "éxito" código tiene que ejecutar después de su fin, el uso una variable:

bool caught = false; 
try 
{ 
    // ... 
} 
catch (...) 
{ 
    caught = true; 
} 
finally 
{ 
    // ... 
} 

if(!caught) 
{ 
    // code to run if not caught 
} 
1
try { 
    // Code that might fail 
    // Code that gets execute if nothing failed 
} 
catch { 
    // Code getting execute on failure 
} 
finally { 
    // Always executed 
} 
1

lo escribiría así: Si la llamada a un método funcionó muy bien, entonces el éxito es simplemente la Lo último dentro de la try

try 
{ 
    DoSomethingImportant(); 
    Logger.Log("Success happened!"); 
} 
catch (Exception ex) 
{ 
    Logger.LogBadTimes("DoSomethingImportant() failed", ex); 
} 
finally 
{ 
    Logger.Log("this always happens"); 
} 
+1

Hombre, SO tiene dedos rápidos. Ustedes deben ir a Londres y competir – SpaceBison

+3

Un millón de monos en un millón de teclados con un millón de cuentas de StackOverflow es probable que produzcan la respuesta correcta con bastante rapidez :) – Polynomial

Cuestiones relacionadas