C#プチリファレンス

C# 例外処理

例外処理に関するサンプルです。

例外をキャッチする(try ~ catch ~ finally)

例外をキャッチするには、try ~ catchで囲います。
finallyは例外の発生有無に係わらず行いたい処理を記述します。

例)try ~ catch ~ finallyのコーディング
try
{
  // 例外が発生する可能性がある処理(ここでは強制的に例外を発生させています)
  int i = int.Parse("ABC");
}
catch (Exception ex)
{
  // 例外発生時に行いたい処理
  Console.WriteLine(ex);
}
finally
{
  // 例外発生有無に係らず実行される処理
  Console.WriteLine("(´・ω・`)<ここは必ず表示されます。");
}
【結果】
型 'System.FormatException' の初回例外が 発生しました System.FormatException: 入力文字列の形式が正しくありません。 場所 System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) 場所 System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) 場所 System.Int32.Parse(String s) (´・ω・`)<ここは必ず表示されます。

例外の種類

主要な例外にはこのようなものがあります。

【System 名前空間例外】
例外意味
Exception全ての例外の基底クラス
NullReferenceExceptionNull参照をした
DivideByZeroException0除算をした
IndexOutOfRangeException配列やリストのインデックスの範囲を超えた参照をした
FormatExceptionフォーマット変換エラー
InvalidCastExceptionキャストできない型へキャストしようとした
ArgumentNullExceptionNullを許さない引数にNullが渡された
ArgumentOutOfRangeException
ArgumentException
UnauthorizedAccessExceptionアクセス権限が無い
【System.IO 名前空間例外】
例外意味
IOExceptionI/Oエラーが発生
FileNotFoundExceptionファイルが見つからない
DirectoryNotFoundExceptionディレクトリが見つからない
PathTooLongExceptionファイル名が長すぎる

例外を投げる(throw)

例外を強制的に発生させて、呼び出し元へ投げることもできます。

例)Exceptionを発生させて呼び出し元へ投げるメソッド
public void ThrowEx()
{
  throw new Exception();
}

自作例外クラスを作る

自作の例外を発生させることもできます。
自作の例外は、System.Exceptionクラスを継承させればOKです。

(自作例外クラス)
using System;

class HogeException : Exception
{
  public HogeException(string msg)
  {
    Console.WriteLine(msg);
  }
}
(自作例外を発生させる)
throw new HogeException("例外発生!");
【結果】
例外発生!
ToTop