例外処理
数値文字列を数値に変換するint.Parseメソッドを例に例外処理を行うと、以下のようになります。
try-catchステートメントを使用し、tryブロックに例外を捕捉したいコードを記述すると、例外をスローした場合はそこでコードが終了し、catchブロックに処理が移動します。
catchブロックの引数に捕捉したい例外のクラスを指定すると、その例外発生時にcatchブロックで処理を行うことができます。
この例ではint.Parseメソッドに渡す文字列が数値の形式ではないため、FormatExceptionをスローするため、FormatExceptionを引数に取っているcatchブロックの処理が実行されます。
try
{
string str = "1-1";
int num = int.Parse(str);
}
catch (FormatException e)
{
Console.WriteLine("フォーマットが不適切です");
}
基本の例外クラス
https://docs.microsoft.com/ja-jp/dotnet/api/system.exception?view=net-6.0
以下は上記ページに記載されている基本的な例外のリストです。
System.Exceptionクラスを基底に、さまざまな例外クラスが定義されていますが、これらは多くのメソッドで返される可能性のあるものです。
| クラス | 説明 |
| ArgumentException | 無効な引数 |
| ArgumentNullException | 引数がnull |
| ArgumentOutOfRangeException | 引数が有効範囲外 |
| DirectoryNotFoundException | ディレクトリパスが見つからない |
| DivideByZeroException | 0除算 |
| DriveNotFoundException | ドライブが見つからない |
| FileNotFoundException | ファイルが見つからない |
| FormatException | フォーマットが不適切 |
| IndexOutOfRangeException | インデックスが境界外 |
| InvalidOperationException | 無効な操作 |
| KeyNotFoundException | キーが見つからない |
| NotImplementedException | メソッドが実装されていない |
| NotSupportedException | メソッドがサポートされていない |
| ObjectDisposedException | 破棄されたオブジェクト |
| OverflowException | オーバーフローが発生 |
| PathTooLongException | パスが最大長を超えている |
| PlatformNotSupportedException | プラットフォームサポート外 |
| RankException | 次元数の誤り |
| TimeoutException | タイムアウト |
| UriFormatException | URIフォーマット |