Menu
Coddy logo textTech

カスタム例外

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 コンストラクターを呼び出して、エラーメッセージを設定します。
1 番目のコンストラクターは、メッセージが指定されていない場合にデフォルトメッセージを提供します。
2 番目のコンストラクターはcustom messageを受け取り、呼び出し元がエラーを詳細に説明できるようにします。

必要に応じて独自の例外をthrowできるようになりました:

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

このコードは negative な age で実行されると、メッセージ「Age cannot be negative.」とともに独自の custom exception を throw します。

注: このレッスンの演習では、validation functions は入力が valid の場合に true を return し、そうでない場合には custom exception を throw します。未処理の exception は実行を直ちに停止させるため、テストケースでは true を return する経路だけを検証すれば十分です。invalid な入力に対しては、exception 自体が観測可能な結果となります。

challenge icon

チャレンジ

中級

Exceptionを継承する、InvalidTemperatureExceptionという名前のcustom例外クラスをCreateしてください。次の要素を持つ必要があります。

  1. "Temperature is not valid."というmessageを設定するデフォルトコンストラクター
  2. custom messageを受け取るコンストラクター

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

  • Celsiusで表された温度を表す整数パラメーターを受け取る
  • 温度が-273未満の場合、"Temperature below absolute zero!"というmessageを持つInvalidTemperatureExceptionをスローする
  • 温度がvalidの場合はtrueをreturnする

自分で試してみよう

using System;

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

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

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

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