導入
不正な引数を受け取ったとき、間違った値のまま処理を続けるより、その場で例外を投げて止めるほうが安全です。throwで自分から例外を発生させます。
図解
flowchart TB
IN["Withdraw(-100)"] --> C{"金額は正しい?"}
C -->|不正| T["throw で例外を投げる<br/>→ 呼び出し側に異常を伝える"]
C -->|正常| P["処理を続行"]
style T fill:#ffebee
サンプル
Console.WriteLine(Divide(10, 2)); // 5
try
{
Divide(10, 0); // ここで投げられた例外を catch する
}
catch (ArgumentException ex)
{
Console.WriteLine($"呼び出し側で捕捉: {ex.Message}");
}
int Divide(int a, int b)
{
if (b == 0)
{
// 不正な入力はその場で例外を投げて処理を止める
throw new ArgumentException("0で割ることはできません");
}
return a / b;
}
throw new 例外型("メッセージ");で例外を発生させる- 不正な引数には
ArgumentExceptionがよく使われる - 「間違った値で処理を続けない」ことでバグの拡大を防ぐ(早期に失敗させる)
演習
// TODO: 年齢を受け取り、マイナスなら ArgumentException を投げ、
// 正常なら "受付完了" を返す Register メソッドを定義してください。
// Register(-5) を try-catch し、例外メッセージ "年齢が不正です" を出力してください
___
- 期待される出力:
年齢が不正です
ヒント1を見る
string Register(int age) { if (age < 0) throw new ArgumentException("年齢が不正です"); return "受付完了"; }
ヒント2を見る
try { Register(-5); } catch (ArgumentException ex) { Console.WriteLine(ex.Message); } string Register(int age) { if (age < 0) throw new ArgumentException("年齢が不正です"); return "受付完了"; }
まとめ
throw new 例外型("メッセージ")で自分から例外を投げる- 不正な引数は
ArgumentExceptionで早期に失敗させる - 間違った値で処理を続けないことがバグを防ぐ
次回: 業務のルール違反を表す「独自例外クラス」の作り方です。