カスタム例外
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 自体が観測可能な結果となります。
チャレンジ
中級Exceptionを継承する、InvalidTemperatureExceptionという名前のcustom例外クラスをCreateしてください。次の要素を持つ必要があります。
- "Temperature is not valid."というmessageを設定するデフォルトコンストラクター
- custom messageを受け取るコンストラクター
次に、checkTemperatureという名前のメソッドを実装してください。このメソッドは次の処理を行います。
- Celsiusで表された温度を表す整数パラメーターを受け取る
- 温度が-273未満の場合、"Temperature below absolute zero!"というmessageを持つ
InvalidTemperatureExceptionをスローする - 温度がvalidの場合はtrueをreturnする
自分で試してみよう
using System;
class CheckTemperature
{
// ここにカスタム例外クラスを作成してください
public static bool checkTemperature(int celsius)
{
// ここにコードを書いてください
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: C#オンラインコンパイラ