編集:このビットに気づきました:
FunA コードに Try catch を配置し、例外が FunA() を通過する場合、FunA 例外を表示します。
さて、あなたはFunA
コードを示していません。を呼び出す コードを示しましたFunA
。FunA
メソッドのブロック内に問題のあるコードがあり、適切なブロックが再スローされていない場合、例外は伝播しません(それが である場合を除きますが、それは少し特殊です)。try
catch
ThreadAbortException
しかし、そうでなければいいえ、FunB
実行されません。これが try/catch の仕組みです。例外がスローされると、実行フローはtry
ブロックを離れ、中断した場所には戻りません。失敗しても本当に実行したい場合は、ブロックの後に呼び出しを行う必要があります。FunB
FunA
catch
try
{
FunA();
}
catch (IOException e) // Or whatever specific exception you want...
{
// Logging here... or possibly returning, or rethrowing in some cases
}
FunB();
ここで特定の例外をキャッチした方法に注意してください。Exception
1 つの論理操作 (Web リクエストやユーザーが開始したアクションなど) の最上位レベルを除いて、単に をキャッチする必要はほとんどありません。おそらく、実際に処理できる例外 (つまり、修正できる状況)は比較的少なく、処理できない例外はたくさんあるので、そのような場合には先に進まないでください。
FunB
もちろん、try/catch ステートメントを入れることもできます。