・用語
try-catchステートメント
例外を捉える処理をtryブロックに記述する
例外が発生したら行う処理をcatchブロックに記述する
例外の種類をxxxにする
例外発生時に行う処理をxxxにする
例外が発生したらメッセージを表示する/例外のメッセージを取得して表示する
例外ごとに処理を分ける
よくある例外種類
・xx配列のインデックスが範囲外の時に例外処理をする IndexOutOfRangeException
・指定したファイルが存在しない時の例外処理をする FileNotFoundException
・パスが無効の時の例外処理をする DirectoryNotFoundException
・パスに無効な構文が含まれている時に例外処理をする IOException
・パスが空の時に例外処理をする ArgumentException
・引數の値が指定可能な範囲を超えている時の例外処理をする ArgumetOutOfRangeException
・0で割り算を行った時の例外処理をする DivideByZeroException
・指定したデータベースが見つからない時の例外処理をする OleDbException
・データベースプロバイダが存在しない時に例外処理をする InvalidOperationException
・テーブル操作が無効の時の例外処理をする OleDbException
・追加するレコードがすでに存在する時の例外処理をする OleDbException
・例外の種類を取得する GetTypeクラス 使用例:ex.GetType().ToString()
・例外が発生したアプリケーション名を取得する Sourceプロパティ 使用例:ex.Source
・例外処理ブロックの後始末をする finallyブロック
・例外を上位レベルで処理をする throwステートメント 例外をスローする
・例外を発生させる throwステートメント
・獨自の例外を定義する
・例外の定義をする
public class ExcSample : ApplicationException
{
private int wrongValue;
//プロパティ命名規則
//プロパティ名には、名詞または名詞句を使用する
//Pascal 形式を使用する
//bool型をIs 形式にする
public int WrongValue
{
get
{
return wrongValue;
}
set
{
wrongValue = value;
}
}
public ExcSample(string msg, int wv) : base(msg)
{
wrongValue = wv;
}
}
・例外を使用する
static void Main(string[] args)
{
int i;
try
{
for (i = 0; i < 10; i++)
{
Console.Write(i.ToString()+" ");
if (i > 2)
throw new ExcSample("不正な値です", i);
}
}
catch (ExcSample ex)
{
Console.WriteLine(ex.Message + "" + ex.WrongValue);
}
Console.ReadKey();
}