例外エラーのシンプルなサンプル
目次
例外エラーの対応
次のようなキーボード入力でテストができます
- a 英文字を入力(整数にキャストできません)
- 0 (ゼロ)を入力 (0で除算できません)
- 1や2といった整数 (正常に処理されます)
例外エラーで強制終了してしまうコード
次のコードは例外エラー(アプリが落ちる)になります
while (true)
{
int a = int.Parse(Console.ReadLine());
Console.WriteLine(10 / a);
}
例外エラーを処理したコード
例外エラーを検出し、その内容(メッセージ)を表示します
while (true)
{
try
{
int a = int.Parse(Console.ReadLine());
Console.WriteLine(10 / a);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
実用的なエラーの処理
例外エラーに頼るのではなく、if文で正常に処理するのが推奨されるコードになります
while (true)
{
// もし入力された文字列が整数に変換できれば、変数aにその値が代入されます
// 条件式の戻り値も同時にtrueになりブロック内が実行されます
if (int.TryParse(Console.ReadLine(), out int a))
{
Console.WriteLine(10 / a);
}
}
usingキーワードを使った後処理
ファイルのオープン処理がなされた後、ファイルの内容が読み取られます
usingキーワードでブロックを作ることでブロック処理終了時、自動的に後処理(ファイルのクローズ処理)が行われます
try
{
using (var file = new StreamReader("abc.txt"))
{
// ファイルから1行読み取って変数lineに代入します
string line = file.ReadLine();
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine("正常に例外エラー処理されました");
}
自作コードで例外エラーを敢えて(あえて)発生させ、処理を呼び出し先に委ねる(ゆだねる)
通常、このようなコードを作成することは希ですが、自分でライブラリを作ったり、クリティカルなメッセージを発信したい場合などに活用します
try
{
// 例外エラーが発生する可能性があるメソッドを呼び出す
Test();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
void Test()
{
// 何らかの条件でエラーを発生させる(if文等で判定します)
throw new ArgumentException("エラーを起こしました");
}
ディスカッション
コメント一覧
まだ、コメントがありません