//Catch ブロックにコードを記述しました
try {
} catch(Excepetion ex) {
// I have written code here If Exception Occurs then how to handle it.
}
catch ブロック内に try catch を配置するか、単に例外を再度スローすることができます。catchブロックで例外が発生した場合でも、finally ブロック コードが実行されるように、try catch でfinallyブロックを使用することをお勧めします。
try
{
}
catch(Excepetion ex)
{
try
{
}
catch
{
}
//or simply throw;
}
finally
{
// some other mandatory task
}
finally ブロックは、特定の例外で実行されない場合があります。より信頼性の高いメカニズムのために、制約付き実行領域が表示される場合があります。
最良の方法は、アプリケーションのさまざまなレイヤーに対して独自の例外を開発し、内部例外でスローすることです。アプリケーションの次のレイヤーで処理されます。catch ブロックで新しい Exception を取得できると思われる場合は、この例外を処理せずに再スローしてください。
ビジネス ロジック層 (BLL) とデータ アクセス層 (DAL) の 2 つの層があり、DAL の catch ブロックに例外があるとします。
ダル:
try
{
}
catch(Excepetion ex)
{
// if you don't know how should you handle this exception
// you should throw your own exception and include ex like inner exception.
throw new MyDALException(ex);
}
BLL:
try
{
// trying to use DAL
}
catch(MyDALException ex)
{
// handling
}
catch(Exception ex)
{
throw new MyBLLException(ex);
}
try
{
// Some code here
}
catch (Exception ex)
{
try
{
// Some more code
}
catch (Exception ex)
{
}
}
ブロックで例外をスローする可能性のあるコード行については、catch
余分な明示的な try..ctach ブロックを作成します。finally
ブロックを持つことを検討する以外に、必ずそこに実行するラインを持っていることを検討してください。ブロックについても同じ問題が発生する可能性がありfinally
ます。したがって、コードがfinally
ブロックで例外をスローする可能性が高い場合は、そこに try..catch を追加することもできます。
try
{
}
catch (Exception ex)
{
try
{
// code that is supposed to throw an exception
}
catch (Exception ex1)
{
}
// code that is not supposed to throw an exception
}
finally
{
try
{
// code that is supposed to throw an exception
}
catch (Exception ex1)
{
}
// code that is not supposed to throw an exception
}
よく設計された 3g プログラミング言語では、二重障害が発生することがよくあります。プロテクト モードと 286 以降、ハードウェア言語の一般的な設計は、トリプル フォールトでチップをリセットすることです。
おそらく、二重障害から抜け出す方法を設計しても問題ありません。この場合、処理を停止したり、ユーザーにエラーを報告したりするために何かをしなければならないことを気にしないでください。たとえば、IO 例外 (データの読み取り/書き込み) をキャッチしてから、読み取り元のストリームを閉じようとしても失敗する場合に遭遇した場合、劇的に失敗して警告するのは悪いパターンではありません。本当に例外的なことが起こったことをユーザーに伝えます。
catch ブロックは、特定の点で特別なものではありません。別の try/catch ブロックを使用するか、エラーを処理しない必要があります。