C#での例外処理の書き方です。
構文
構文
try
{
//例外が発生する可能性がある処理
}
catch(<例外クラス>)
{
//例外発生時の処理
}
finally
{
//例外発生の有無に係わらず実行したい処理
}
catchは発生した例外毎に複数記述できます。
finallyは省略可です。
サンプル
例)try~catch~finallyを使ったサンプル
class TestClass
{
static void Main(string[] args)
{
try
{
Console.WriteLine("処理を開始します。");
int a = 100;
int b = 0;
double x = a / b;
}
catch(Exception ex)
{
Console.WriteLine("例外が発生しました。");
Console.WriteLine(ex);
}
finally
{
Console.WriteLine("処理を終了します。");
}
}
}
結果
処理を開始します。
例外が発生しました。
System.DivideByZeroException: Attempted to divide by zero.
処理を終了します。
結果は分かりやすくするため一部省略しています。
標準例外クラス
標準の例外クラスには以下のようなものがあります。
独自例外を作成してcatchすることもできます。
例外クラス | 意味 |
---|---|
System.Exception | すべての例外 |
System.OutOfMemoryException | メモリ不足例外 |
System.InvalidCastException | 型変換に失敗した |
System.IndexOutOfRangeException | 範囲外エラー 配列のインデックスを超えてアクセスしたなど |
System.NullReferenceException | Null参照した |
System.DivideByZeroException | ゼロ除算を行った |
System.IO.IOException | ファイル入出力などでエラーが発生した |
Catchした例外を使用しない場合
Catchした例外を使用しない場合は、Catch句に変数名を省略することもできます。
例)Catch句の変数を省略したサンプル
try
{
// 処理
}
catch(Exception)
{
Console.WriteLine("例外が発生しました。");
}
この例ではCatch句に例外クラスのみ指定して、変数は省略しています。
備考
- 基本的にJavaなどと同じ構文です。
- 独自例外クラスは、System.Exceptionを継承させる必要があります。