2012-07-31 12 views
5

Try/Catchを使用すると、エラーが検出され、キャッチされていない場合に、If/Elseと同様にコードを実行するような方法がありますか?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

試行の最後にコードを追加しないのはなぜですか。 –

+1

外部の例外処理によってキャッチされるコードの残りの部分がスローされ、この内部のtry/catchブロックでは例外が発生する可能性があるためです。この場合、私が知っているこれを行う最善の方法はブールを使うことです。 – John

答えて

18

tryブロックの最後にコードを追加してください。あなたはおそらく、あなたが唯一の例外を含むことができ、フラットアウトはすべて、あなたが期待する例外をキャッチしていない方法であなたの漁獲量を変更する必要があり

try { 
    // code to check 

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

:前に例外がなかった場合はもちろん、あなたは今まであり得ますあなたが実行したいコードにスローされた場合、それはすべてOKです«。

5

例外をスローする可能性のあるコードの後に​​置きます。

例外がスローされた場合は実行されず、スローされない場合は実行されます。あなたはtryコードが成功した場合、それは常に実行する必要がある場合

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

することは、あなたのtryブロックの最後にそれを置きます。あなたのtryブロックの前のコードが例外なく実行されている限り実行されます。あなたはあなたのための代替例外処理が必要な場合は

try 
{ 
    // normal code 

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

コードを「succeded」、することができます常に巣あなたのtry /キャッチ:

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 
} 

あなたの「成功」した場合のコードは、あなたの最後に、使用後に実行する必要があります変数:

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

私はこのようにそれを記述します。メソッドの呼び出しが正常に実行した場合、その後の成功は単にありますtry

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

男、SOにはクイックフィンガーがあります。あなたはみんなロンドンに乗って競争しなければなりません – SpaceBison

+3

100万のStackOverflowアカウントを持つ百万のキーボードで百万円の猿が正解をかなり早く生成するでしょう:) – Polynomial

関連する問題