【C#】例外処理クラス一覧まとめ【原因と解決例】

C#,エラー/例外

この記事では、C#の例外エラークラスを一覧にまとめました。

例外エラーは、別名ランタイムエラーとも呼ばれ、コンピュータプログラムの実行時に発生するエラーのこと。
実行を継続できないほどの致命的な問題であり、プログラムは例外が発生した時点で実行を中断し異常終了します。

コンパイルエラーとは違い、原因が多岐に渡ります。
そのため、解決は難しいもの。

そんな例外処理についてまとめました。
システム開発で例外エラーに遭遇した際の役立てとしてください。

筆者

疑問点や質問には何でも答えようと思っています。
この記事の不明点はこちらからお問い合わせ下さい

C#のおすすめ講座を受講して、最短1週間でC#をマスターしよう!
⇒C#が学べるおすすめプログラミングスクール&オンライン講座11選

C# 例外処理クラスの一覧表とエラーの内容

下記は例外クラスの一覧です。C#が提供しているMicrosoft Docs のドキュメントを参考に作成しています。

解決例とともにご確認ください。

例外エラー内容
ArgumentExceptionメソッドの引数が不正な値のエラー (解決例)
ArgumentNullExceptionメソッドの引数が null のエラー (解決例)
ArgumentOutOfRangeExceptionメソッドの引数が有効な値の範囲外のエラー (解決例)
DirectoryNotFoundExceptionファイルやディレクトリが見つからないエラー (解決例)
DivideByZeroException0 で割り算しようとした場合のエラー (解決例)
DriveNotFoundException使用できないドライブや共有にアクセスした際のエラー
FileNotFoundExceptionディスク上に存在しないファイルへのアクセスエラー (解決例)
FormatException引数が無効な場合や文字列の Parse 処理失敗時のエラー (解決例)
IndexOutOfRangeException配列やコレクションのインデックスが範囲外のエラー (解決例)
InvalidOperationException引数以外の原因で無効なメソッド呼び出しエラー (解決例)
KeyNotFoundExceptionコレクション内にキーが見つからない場合のエラー (解決例)
NotImplementedExceptionメソッドまたは操作が実装されてない場合のエラー (解決例)
NotSupportedExceptionメソッドまたは操作がサポートされてない場合のエラー
NullReferenceException変数がnullのメソッドを呼び出した時のエラー (解決例)
ObjectDisposedExceptionDispose 済のオブジェクトに対しての操作エラー (解決例)
OverflowException算術演算やキャストでオーバーフローが起きた場合のエラー
PathTooLongExceptionパス名やファイル名が定義の最大長を超えた場合のエラー (解決例)
PlatformNotSupportedException機能が特定のプラットフォームでサポートされてない場合のエラー
RankException間違った次元数の配列がメソッドに渡された際のエラー (解決例)
TimeoutException指定した時間が経過した場合のエラー
UriFormatException無効な URI が検出された場合のエラー
C#例外処理早見表

上記解決例をクリックすると詳しい解決策を解説したページにスキップします。

C# 例外発生コードの例

例外が発生するコードの例を下記に示します。

ArgumentException

メソッドに渡された引数のいずれかが無効な場合にスローされる例外です。

var dc = new Dictionary<int, string>();
dc.Add(1, "orange");
dc.Add(2, "apple");
dc.Add(3, "banana");
dc.Add(3, "orange");// Dictionaryのキーが重複したためエラーが発生する。渡された引数が無効

詳しいエラー内容はこちら
https://learn.microsoft.com/ja-jp/dotnet/api/system.argumentexception?view=net-7.0

ArgumentNullException

null参照が有効ではない引数にnullを設定した場合に発生する例外です。

string str = null;
int a = int.Parse(str);// 引数にnullを設定すると例外が発生。

詳しいエラー内容はこちら
https://learn.microsoft.com/ja-jp/dotnet/api/system.argumentnullexception?view=net-7.0

ArgumentOutOfRangeException

呼び出されたメソッドで定義されている許容範囲外の値が渡された場合に発生するエラーです。

String text = "エラーが発生";
text.Substring(10);// 文字列の長さの範囲外の値を引数にする

詳しいエラー内容はこちら
https://learn.microsoft.com/ja-jp/dotnet/api/system.argumentoutofrangeexception?view=net-7.0

DirectoryNotFoundException

指定された文字列のパスが存在しない場所を指している場合に発生するエラーです。

string logFile = "C:\Users\Sample.txt"; // 存在しないファイルパス
string logData = File.ReadAllText(logFile);// 存在しないパスを指定しているためエラーが発生する

詳しいエラー内容はこちら
https://learn.microsoft.com/ja-jp/dotnet/api/system.io.directorynotfoundexception?view=net-7.0

DivideByZeroException

割る数を0で除算すると発生するエラーです。

int a = 0;
int b ;
b = 1 / a;// DivideByZeroException: 0で除算すると例外が発生する。

詳しいエラー内容はこちら
https://learn.microsoft.com/ja-jp/dotnet/api/system.dividebyzeroexception?view=net-7.0

DriveNotFoundException

使用できないドライブ、あるいは共有にアクセスしようとした場合のエラー。

詳しいエラー内容はこちら
https://learn.microsoft.com/ja-jp/dotnet/api/system.io.drivenotfoundexception?view=net-7.0

FileNotFoundException

ディスク上に存在しないファイルにアクセスしようとして失敗したときに発生するエラーです。

string filePath = "/Sample.txt"; // 存在しないファイル
StreamReader sr = new System.IO.StreamReader(filePath);// 存在しないファイルパスでインスタンスを生成したためエラーとなる
string file = sr.ReadToEnd();

詳しいエラー内容はこちら
https://learn.microsoft.com/ja-jp/dotnet/api/system.io.filenotfoundexception?view=net-7.0

FormatException

引数の入力形式が無効である場合に発生するエラーです。

string str = "text";
int a = Convert.ToInt32(str);// エラーが発生する。strには数字かnullを設定する必要がある。

詳しいエラー内容はこちら
https://learn.microsoft.com/ja-jp/dotnet/api/system.formatexception?view=net-7.0

IndexOutOfRangeException

配列やコレクションのインデックス範囲外の場合に起こるエラーです。

int[] nums = new int[] { 1, 2, 3 };
System.Console.WriteLine(nums[6]);// IndexOutOfRangeException エラー: Index was outside the bounds of the array.

詳しいエラー内容はこちら
https://learn.microsoft.com/ja-jp/dotnet/api/system.indexoutofrangeexception?view=net-7.0

InvalidOperationException

オブジェクトの現在の状態に対して無効なメソッド呼び出しが行われた場合に発生する例外です。

var hoges = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
foreach (var hoge in hoges)
{
    hoges.Remove(hoge);//参照中のオブジェクトに対して無効なメソッドを行う。エラーが発生する
}

詳しいエラー内容はこちら
https://learn.microsoft.com/ja-jp/dotnet/api/system.invalidoperationexception?view=net-7.0

KeyNotFoundException

コレクション内の要素にアクセスするために指定したキーがコレクションに存在しない時に発生するエラーです。

var dic = new Dictionary<string, string>();
dic.Add("1", "orange");
dic.Add("2", "apple");
dic.Add("3", "grape");
System.Console.WriteLine(dic["4"]);//指定したキーが存在しないため、エラーが発生する

詳しいエラー内容はこちら
https://learn.microsoft.com/ja-jp/dotnet/api/system.collections.generic.keynotfoundexception?view=net-7.0

NotImplementedException

要求されたメソッドまたは操作が実装されていない場合に発生するエラーです。

public static void printText()
{
    //メソッド生成時にNotImplementedException()が自動生成される場合がある。
    throw new NotImplementedException();
}

Program.printText();

詳しいエラー内容はこちら
https://learn.microsoft.com/ja-jp/dotnet/api/system.notimplementedexception?view=net-7.0

NotSupportedException

メソッドまたは操作がサポートされてない場合のエラー。

詳しいエラー内容はこちら
https://learn.microsoft.com/ja-jp/dotnet/api/system.notsupportedexception?view=net-7.0

【NullReferenceException

nullの変数のメソッドを呼び出した時に発生するエラーです。

int[] a = null;
for (int i = 0;i < a.Length; i++)// 変数aにnullが格納されているのに「a.Length」を呼び出す→エラー
{
    a[i] = 0;
}

詳しいエラー内容はこちら
https://learn.microsoft.com/ja-jp/dotnet/api/system.nullreferenceexception?view=net-7.0

ObjectDisposedException

破棄されたオブジェクトで操作が実行された時に発生するエラーです。

MemoryStream ms = new MemoryStream(16);
ms.Dispose();
ms.ReadByte();// Dispose(廃棄)したオブジェクトを利用しようとしたためエラーが発生

詳しいエラー内容はこちら
https://learn.microsoft.com/ja-jp/dotnet/api/system.objectdisposedexception?view=net-7.0

OverflowException

算術演算やキャストでオーバーフローが起きた場合のエラーです。

詳しいエラー内容はこちら
https://learn.microsoft.com/ja-jp/dotnet/api/system.overflowexception?view=net-7.0

PathTooLongException

パス名または完全修飾ファイル名がシステム定義の最大長を超えた時に発生するエラーです。

string logFilePathLong = "C:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; 
string logData = File.ReadAllText(logFilePathLong);// ファイルパスが260文字より長いためエラーが発生

詳しいエラー内容はこちら
https://learn.microsoft.com/ja-jp/dotnet/api/system.io.pathtoolongexception?view=net-7.0

PlatformNotSupportedException

ある機能が特定のプラットフォームでサポートされてない場合のエラーです。

このエラーが発生した時は、

  • .NET Frameworkのバージョンに対応したクラスライブラリか確認する
  • Unityなどの関連付けられたソフトを確認する

などを試してください。

詳しいエラー内容はこちら
https://learn.microsoft.com/ja-jp/dotnet/api/system.platformnotsupportedexception?view=net-7.0

RankException

次元数に誤りのある配列がメソッドに渡された時に発生するエラーです。

int[] arr1 = {1,2,3,4 };
Array.Reverse(arr1);//4,3,2,1
int[,] arr2 = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 } };
Array.Reverse(arr2); // 多次元配列を反転することはできない。エラーが発生する

詳しいエラー内容はこちら
https://learn.microsoft.com/ja-jp/dotnet/api/system.rankexception?view=net-7.0

TimeoutException

指定した時間が経過した場合のエラー。

詳しいエラー内容はこちら
https://learn.microsoft.com/ja-jp/dotnet/api/system.timeoutexception?view=net-7.0

UriFormatException

無効な URI が検出された場合のエラー。

詳しいエラー内容はこちら
https://learn.microsoft.com/ja-jp/dotnet/api/system.uriformatexception?view=net-7.0

エラーを解決できなくて途方に暮れている人へ。

■無料プログラミング講座を開設しています!
下記にVisual Studioを使ったC#プログラミング初心者向け完全ガイドを掲載しています。
このガイドを一通り勉強すれば、C#プログラミングの基礎が学べるので、是非チャレンジしてみてください!

C#初心者向けに始め方ガイドを作成しています。
筆者

プログラミング初心者の方はぜひチャレンジしてみてください!!

C#,エラー/例外

Posted by 9noike