Menu
CoddyTech

カスタム例外

CoddyのC#ジャーニー「ロジックとフロー」セクションの一部。レッスン 29/66。

カスタム例外を使うと、アプリケーション固有のエラー状況に対応する特定の例外型を作成できます。

カスタム例外を作成するには、Exceptionを継承するクラスを定義します。継承とは、新しいクラスが親クラスのすべての動作(この場合はException)を自動的に受け継ぎつつ、機能を追加したりカスタマイズしたりできることを意味します。構文class MyException : Exceptionは、MyExceptionはExceptionを拡張することを意味します。

public class InvalidAgeException : Exception
{
    public InvalidAgeException() : base("Age is not valid.")
    {
    }
    
    public InvalidAgeException(string message) : base(message)
    {
    }
}

: Exception:組み込みのExceptionクラスを継承します。
: base(...):親クラスExceptionのコンストラクターを呼び出し、エラーメッセージを設定します。
最初のコンストラクターは、メッセージが指定されていない場合にデフォルトのメッセージを設定します。
2つ目のコンストラクターは、呼び出し元がエラーを詳しく説明できるようにカスタムメッセージを受け取ります。

必要なときに、カスタム例外をスローできるようになりました。

int age = -5;
if (age < 0)
{
    throw new InvalidAgeException("Age cannot be negative.");
}

このコードを負の年齢で実行すると、「Age cannot be negative.」というメッセージとともにカスタム例外がスローされます。

注: このレッスンの演習では、検証関数は入力が有効な場合にtrueを返し、無効な場合はカスタム例外をスローします。未処理の例外が発生すると実行が直ちに停止するため、テストケースではtrueを返す経路だけを検証すれば十分です。無効な入力に対しては、例外自体が観測可能な結果となります。

challenge icon

チャレンジ

中級

Exception を継承する InvalidTemperatureException という名前のカスタム例外クラスを作成してください。次のものを持つ必要があります。

  1. メッセージ "Temperature is not valid." を設定するデフォルトコンストラクター
  2. カスタムメッセージを受け取るコンストラクター

次に、次の処理を行う checkTemperature という名前のメソッドを実装してください。

  • 摂氏温度を表す整数型のパラメーターを受け取る
  • 温度が -273 未満の場合、メッセージ "Temperature below absolute zero!" を含む InvalidTemperatureException をスローする
  • 温度が有効な場合は true を返す

自分で試してみよう

using System;

class CheckTemperature
{
    // ここに独自の例外クラスを作成してください
    
    public static bool checkTemperature(int celsius)
    {
        // ここにコードを記述してください
    }
    
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン

自分で練習してみよう: C#オンラインコンパイラ