.NETの定義済み例外を覚えよう!

[C#] .NETの定義済み例外を覚えよう!

※ 当サイトは広告を含みます。

C#に標準的に用意されてる例外の紹介です。
この辺の例外は事象を判断するのに便利なので、覚えておいたほうがお得ですよ。

公式ドキュメント

実はC#の公式に例外に関するドキュメントがあります。
https://learn.microsoft.com/en-us/dotnet/standard/design-guidelines/using-standard-exception-types

管理人
管理人

ここを読むとException型あたりは任意発生させるなって書いてあります。

りさ
りさ

つまり使っちゃ駄目なんですか?

管理人
管理人

いや、別にいいんじゃね。ガチガチにルール守ると手間も増えるし。

System 名前空間

汎用的に発生する例外です。1番よく見る系の例外が定義されてます。

Exception 例外の頂点。何系に属するのか分からないので任意発生は良くないと言われている。
ApplicationException ほぼExceptionと同じ。これも任意発生は良くないらしい。
NullReferenceException null参照が発生した。
FormatException フォーマットが適切ではない。
OverflowException オーバーフローが発生した。
DivideByZeroException いわゆる0除算が発生した。
TimeoutException タイムアウトが発生した。
StackOverflowException スタックオーバーフローが発生した。
OutOfMemoryException メモリ不足が発生した。
AccessViolationException 保護されたメモリ領域にアクセスすると発生する。
ObjectDisposedException 破棄済みのオブジェクトが利用された。
IndexOutOfRangeException アクセス範囲外のインデックスを参照した。
InvalidOperationException 無効な操作が発生した。
RankException 配列の次元数が適切ではない。
ArgumentException 引数が適切ではない(nullや有効範囲外なら後述を利用する)。
ArgumentNullException 引数がnullです。
ArgumentOutOfRangeException 引数が有効範囲外です。
NotImplementedException メソッド等が実装されてません。
NotSupportedException メソッド等でサポート外の操作が発生した。
PlatformNotSupportedException プラットフォームでサポート外の操作が発生した。
管理人
管理人

あんまり見ないのあるけど、C#の公式で紹介されてたので載せました。

System.IO 名前空間

ディレクトリやファイルの操作で発生する例外です。

DriveNotFoundException 指定したドライブが存在しない。
DirectoryNotFoundException 指定したディレクトリが存在しない。
FileNotFoundException 指定したファイルが存在しない。
PathTooLongException 指定したパスが長すぎる。

System.Collections.Generic 名前空間

コレクション操作時に発生する例外です。

KeyNotFoundException アクセスするためのキーが存在しない。

あとがき

可能な限り独自の例外は作らず、.NETに定義済みの例外を使うほうが、他の開発者も理解しやすいメリットがあります。
特にSystem名前空間に存在する例外は汎用利用が前提なので、この中から選ぶと独自例外を作る手間も減ります。

◆ C#に関する学習コンテンツ

この記事は参考になりましたか?

関連記事

コメント

この記事へのコメントはありません。