C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#でのユーザー定義のカスタム例外クラスの作成方法

例外とクラスの関係

C#における例外は、すべてクラスとして表現されます。標準ライブラリで提供されている例外クラスの多くは、System.Exceptionクラスを直接または間接的に継承して構成されています。

アプリケーション固有のエラー状態を表現したい場合には、独自の例外クラス(カスタム例外)を定義するのが有効です。ユーザー定義の例外クラスは、Exceptionクラスを継承することで作成できます。

カスタム例外クラスの定義手順

独自の例外クラスを作成する際の基本的な流れは以下の通りです。

  • Exceptionクラス(またはその派生クラス)を継承した新しいクラスを定義する
  • コンストラクタでbaseキーワードを使い、エラーメッセージを基底クラスに引き渡す
  • 異常な状態を検知した際に、throwステートメントで例外をスローする
  • 呼び出し側ではtry-catchブロックで例外を捕捉し、適切に処理する

サンプルコード

以下は、温度が0度の場合に独自の例外「TempIsZeroException」をスローする例です。

using System;

namespace UserDefinedException {
    class TestTemperature {
        static void Main(string[] args) {
            Temperature temp = new Temperature();
            try {
                temp.showTemp();
            } catch(TempIsZeroException e) {
                Console.WriteLine("TempIsZeroException: {0}", e.Message);
            }
            Console.ReadKey();
        }
    }
}

public class TempIsZeroException : Exception {
    public TempIsZeroException(string message) : base(message) {
    }
}

public class Temperature {
    int temperature = 0;

    public void showTemp() {
        if(temperature == 0) {
            throw (new TempIsZeroException("Zero Temperature found"));
        } else {
            Console.WriteLine("Temperature: {0}", temperature);
        }
    }
}

実行結果

TempIsZeroException: Zero Temperature found

コードのポイント解説

1. 例外クラスの定義

TempIsZeroExceptionクラスはExceptionクラスを継承しており、コンストラクタ内でbase(message)を呼び出すことで、エラーメッセージを基底クラスに引き渡しています。これにより、インスタンスのMessageプロパティ経由でメッセージを取得できるようになります。

2. 例外のスロー

TemperatureクラスのshowTemp()メソッドでは、温度が0である場合にthrowステートメントを使用してTempIsZeroExceptionをスローします。このように、ビジネスルール上の異常な状態を例外として通知できます。

3. 例外の捕捉

Mainメソッド内のtry-catchブロックでは、showTemp()の呼び出しをtryで囲み、catch節でTempIsZeroException型を明示的に指定して例外を捕捉しています。catchブロック内ではe.Messageにより、スロー時に渡されたメッセージを取得して表示できます。

まとめ

C#ではExceptionクラスを継承するだけで、アプリケーション固有の意味を持つカスタム例外を簡単に作成できます。標準例外だけでは表現しきれないドメイン固有のエラーを明確に伝えたい場合に、カスタム例外の活用を検討してみてください。

  1. JavaScriptでカスタムエラーを作成する方法【サンプルコード付き】

    JavaScriptでは、組み込みのErrorクラスを継承することで、アプリケーション固有のカスタムエラーを簡単に定義できます。カスタムエラーを活用すると、エラーの種類や原因を明確に区別でき、デバッグやエラーハンドリングの精度が大きく向上します。 カスタムエラーの基本 カスタムエラーを作成するには、ES6のclass構文でErrorクラスをextendsし、コンストラクタ内でsuper()を呼び出してエラーメッセージを親クラスに受け渡します。さらに、this.nameに独自のエラー名を設定することで、標準のErrorオブジェクトと明確に区別できるようになります。 実装例 以下は、JavaS

  2. Rubyでカスタム例外を作成する方法【初心者向けガイド】

    Rubyでは、独自の例外クラスを簡単に作成できます。この記事では、カスタム例外を作るための基本的な手順を、コード例とともにわかりやすく解説します。 1. 新しいクラスを作成する Rubyにおいて、例外も他のオブジェクトと同じくクラスとして定義されています。新しい種類の例外を作りたい場合は、StandardError、あるいはそのサブクラスを継承したクラスを定義するだけでOKです。 class MyError < StandardError end raise MyError 慣例として、新しく作る例外クラスの名前は「Error」で終わるように命名します。また、カスタム例外をモジュ