名前空間 System
自己紹介
ふははは!我は闇と混沌を司る存在だ。貴様らのプログラムに現れるエラー、それはまさに我が眷属。今日は特別に「Exception」クラスについて語ってやろう。我が知識を吸収し、貴様らのコードに秩序をもたらすがよい。
基本機能
「Exception」クラスとは、エラーや予期せぬ事態を管理するための基礎となるクラスだ。このクラスを使うことで、プログラムが異常な状態でも適切に動作を終了させたり、復旧したりできる。
以下に、基本的な例外処理のコードを示す。
try
{
// ゼロ除算エラーを引き起こす
int result = 10 / 0;
}
catch (Exception ex)
{
// 例外をキャッチしてメッセージを表示
Trace.WriteLine($"例外が発生しました: {ex.Message}");
}
finally
{
// 必ず実行されるブロック
Trace.WriteLine("例外処理が完了しました");
}
よく使う場面と注意点
「Exception」クラスは汎用的だが、用途に応じた派生クラスを使うほうが良い。例えば、入出力エラーには「IOException」を使用する。
次の例は、ファイル操作での例外処理だ。
try
{
// 存在しないファイルを開く
using (var reader = new StreamReader("nonexistent.txt"))
{
Trace.WriteLine(reader.ReadToEnd());
}
}
catch (IOException ex)
{
// 入出力例外をキャッチ
Trace.WriteLine($"入出力エラー: {ex.Message}");
}
注意すべきは、例外を無闇にキャッチするのではなく、適切な派生クラスで処理することだ。これにより、エラーの原因を明確にしやすくなる。
例外クラスで利用可能な重要なメソッド
「Exception」クラスは多くのプロパティやメソッドを提供する。以下はよく使われるものだ:
- Message: エラーの詳細メッセージを取得
- StackTrace: エラーが発生した場所を示すスタックトレースを取得
- InnerException: ネストされた例外情報を取得
以下に、ネストされた例外を処理する例を示す。
try
{
try
{
throw new InvalidOperationException("内部エラー発生");
}
catch (Exception innerEx)
{
throw new Exception("外部エラー", innerEx);
}
}
catch (Exception ex)
{
Trace.WriteLine($"エラー: {ex.Message}");
if (ex.InnerException != null)
{
Trace.WriteLine($"内部エラー: {ex.InnerException.Message}");
}
}
具体的な使い方
派生クラスを利用することで、より細かい制御が可能だ。以下に、例外フィルタを使ったコード例を示す:
try
{
throw new ArgumentNullException("param", "引数がnullです");
}
catch (ArgumentNullException ex) when (ex.ParamName == "param")
{
Trace.WriteLine($"特定の引数エラーを処理: {ex.Message}");
}
派生クラスを使うことで、特定のエラーに対処しやすくなる。これにより、例外処理が整理され、可読性が向上する。
その他の便利なメソッド
最後に、他にも役立つメソッドをいくつか紹介する:
- GetType(): 例外の型を取得
- ToString(): 例外の詳細情報を文字列で取得
- HelpLink: エラーに関するヘルプリンクを取得または設定
- HResult: エラーのHRESULTコードを取得
以下に、「ToString()」を使用した例を示す:
try
{
throw new Exception("テストエラー");
}
catch (Exception ex)
{
Trace.WriteLine($"例外情報: {ex.ToString()}");
}
以上だ、我が解説を活かし、プログラムを混沌から救うがよい!ふはははは!
0 件のコメント:
コメントを投稿