C#での例外処理と自作Exceptionの使い方を徹底解説!

C#でプログラムを作成していると、予期しないエラーや問題に直面することがあります。
これらの問題を適切に処理し、ユーザーにとってわかりやすくメッセージを提示することはプログラムの品質を高めるために非常に重要です。

この記事では、C#における例外処理の基本的な仕組みを紹介し、独自のExceptionクラスを自作して、
さらに柔軟でメンテナブルなコードを書く方法について解説します。
この記事を読むことでC#の例外処理に対する理解が深まり、自作のExceptionクラスを通じて、
より良いエラーハンドリングを実現できるようになります。

記事のポイント

  • C#の基本的な例外処理について理解する
  • 自作のExceptionクラスの作成方法
  • エラーコードとカスタムメッセージの追加方法
  • 例外を発生させるタイミングと処理方法
目次

C#での例外処理と自作Exceptionの基本

C#の例外クラス一覧と種類

C#には多くの標準的な例外クラスが用意されています。
System.Exceptionを基底クラスとし、その派生クラスが多数存在します。
例えば、ArgumentNullExceptionIndexOutOfRangeExceptionなどがあります。
これらの例外クラスは、特定のエラー状況に対処するために使用されます。

C# Exceptionの種類と判定方法

C#の例外処理では、try-catchブロックを使用してエラーをキャッチし、処理を続行することができます。
すべての例外をキャッチするためには、汎用的なExceptionクラスをキャッチする方法がありますが、
より特定のエラーを処理するためには、派生クラスを使って例外の種類を判定することが推奨されます。

try
{
    // 例外が発生する可能性のあるコード
}
catch (ArgumentNullException ex)
{
    Console.WriteLine("引数がnullです: " + ex.Message);
}
catch (Exception ex)
{
    Console.WriteLine("一般的な例外が発生しました: " + ex.Message);
}

C#での例外処理: try-catchで全ての例外をキャッチする

すべての例外をキャッチしたい場合は、最後のcatchブロックでExceptionクラスを指定することで、
あらゆるエラーに対応することができます。
ただし、この方法は推奨されていません。
なぜなら、特定の例外に対する適切な処理を行わないと、デバッグが困難になる可能性があるためです。

自作Exceptionクラスとエラーハンドリングの強化

C#で自作のExceptionクラスを作成する理由

C#で独自のエラーハンドリングを強化したい場合、自作のExceptionクラスを作成することが効果的です。
これにより、プログラムの状態やエラーメッセージをカスタマイズでき、特定のエラーに対して適切な処理を行うことが可能になります。

public class MyCustomException : Exception
{
    public int ErrorCode { get; }

    public MyCustomException(string message, int errorCode) : base(message)
    {
        ErrorCode = errorCode;
    }
}

C# Exceptionのエラーコードの取得と自作メッセージの設定

自作の例外クラスでは、独自のエラーコードを持たせることができます。
これにより、エラーの詳細をより具体的に把握でき、ログやユーザーに対するメッセージに反映させることが可能です。

try
{
    throw new MyCustomException("カスタムエラーが発生しました", 404);
}
catch (MyCustomException ex)
{
    Console.WriteLine($"エラーメッセージ: {ex.Message}, エラーコード: {ex.ErrorCode}");
}

C#で例外を発生させる方法

自作のExceptionクラスを作成した後は、任意の場所でthrow文を使用して例外を発生させることができます。
例外は通常、プログラムの実行中に何らかの異常が発生した場合に、適切なメッセージやコードをユーザーに伝えるために利用されます。

public void ValidateInput(string input)
{
    if (string.IsNullOrEmpty(input))
    {
        throw new MyCustomException("入力が無効です", 1001);
    }
}

C#の例外処理におけるベストプラクティス

try-catchを正しく使う

C#の例外処理では、try-catchブロックを過剰に使いすぎないことが重要です。
必要な場所でのみ使用し、例外が発生することが想定される箇所に限定することが望ましいです。
これにより、パフォーマンスの低下を防ぎ、コードの可読性を保つことができます。

エラーメッセージとログの活用

例外処理で重要なのは、エラーメッセージとログを正しく記録することです。
自作のExceptionクラスを使うことで、エラーメッセージをよりカスタマイズし、
ユーザーにとってわかりやすい形で提示できます。
また、システム管理者や開発者にとっても問題のトラブルシューティングがしやすくなります。

独自のエラーハンドリング戦略

アプリケーションの規模が大きくなると、標準の例外クラスだけでは対応しきれない場合があります。
そのため、自作のExceptionクラスを使用して、プロジェクトに合ったエラーハンドリング戦略を構築することが推奨されます。
これにより、コードの再利用性やメンテナンス性が向上し、システムの信頼性も高まります。

まとめ: C#で自作Exceptionを活用してエラーハンドリングを強化する

C#の標準的な例外処理だけでなく、自作のExceptionクラスを活用することで、
エラーハンドリングをより強力にし、柔軟でメンテナンス性の高いアプリケーションを構築することが可能です。
自作の例外クラスにエラーコードやカスタムメッセージを追加することで、
エラーの発生源を特定しやすくし、開発者やユーザーに対して適切な情報を提供することができます。

他にもC#の様々なテクニックの紹介やエンジニアに役立つ情報を発信していますので興味のある方は以下のリンクからどうぞ!

C#やエンジニアに役立つ情報はこちら

収入を上げたいエンジニアはこちら

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次