例外処理
数値文字列を数値に変換する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フォーマット |