C#のtry-catch-finallyによる例外処理のフロー制御をわかりやすく解説
C#におけるtry、catch、finallyブロックのフロー制御は、実際のコード例を見ると理解しやすくなります。ここでは、2つの数値の除算を行うプログラムを例に、例外処理の流れを解説します。
サンプルコード
using System;
namespace ErrorHandlingApplication {
class DivNumbers {
int result;
DivNumbers() {
result = 0;
}
public void division(int num1, int num2) {
try {
result = num1 / num2;
} catch (DivideByZeroException e) {
Console.WriteLine("Exception caught: {0}", e);
} finally {
Console.WriteLine("Result: {0}", result);
}
}
static void Main(string[] args) {
DivNumbers d = new DivNumbers();
d.division(25, 0);
Console.ReadKey();
}
}
}
この例では、25を0で割ろうとしているため、DivideByZeroException(ゼロ除算例外)が発生します。
実行結果
Exception caught: System.DivideByZeroException: Attempted to divide by zero. at ErrorHandlingApplication.DivNumbers.division (System.Int32 num1, System.Int32 num2) [0x00000] in :0 Result: 0
try-catch-finallyのフロー制御のポイント
C#における例外処理の基本的な制御の流れは、以下のようになります。
- 例外が発生した場合:
tryブロック内で例外がスローされると、残りの処理は中断され、制御は直ちにcatchブロックへ移ります。 - catchブロック終了後:
catchブロックの処理が完了すると、続いてfinallyブロックが実行されます。 - 例外が発生しなかった場合:
tryブロックが最後まで正常に実行された後、catchブロックはスキップされ、直接finallyブロックへ制御が移ります。
finallyブロックは、例外の有無にかかわらず必ず実行されるため、ファイルやデータベース接続などのリソース解放処理を記述するのに適しています。この特性により、プログラムの安全性と信頼性を高めることができます。
-
JavaScriptの例外処理の仕組みを解説!try...catch...finallyの基本と使い方
JavaScriptでは、try...catch...finally構文を使って例外(エラー)を処理します。比較的新しいバージョンのJavaScriptから例外処理の仕組みが導入され、try...catch...finallyブロックに加えてthrow演算子も実装されています。これらを組み合わせることで、プログラムの実行中に発生したエラーを適切に捕捉し、制御することが可能になります。 なお、プログラマが意図的に発生させた例外やランタイムエラーは捕捉できますが、JavaScriptの構文エラー(シンタックスエラー)は捕捉できない点に注意しましょう。構文エラーはコードの解析段階で検出されるためです
-
JavaScriptのtry文とcatch文の使い方をサンプルコードで解説
try文とcatch文とはtry文を使うと、コードブロックを実行しながらエラーの有無をテストできます。実行中にエラーが発生した場合、そのエラーはcatch文によって捕捉(キャッチ)され、プログラムが強制終了することなく適切に処理を行うことができます。この仕組みは「例外処理」と呼ばれ、予期しないエラーが発生してもユーザーに分かりやすいメッセージを表示したり、代替処理に切り替えたりする際に非常に役立ちます。JavaScriptにおけるtry文とcatch文のサンプルコード以下は、宣言前に変数へアクセスした際に発生するエラーを、try〜catch文で捕捉して画面に表示する例です。コード例<!D