意図的にエラーを発生させる「throw(スロー)」とは?
C#では、throw キーワードを使って、意図的に例外(エラー)を発生させることができます。
これを「例外をスローする」と呼び、エラーチェックや条件違反の通知に活用されます。
基本構文
throw new 例外クラス名("エラーメッセージ");
例:マイナスの年齢を検出して例外をスロー
public void SetAge(int age) {
if (age < 0) {
throw new ArgumentException("年齢は0以上である必要があります");
}
Console.WriteLine("年齢:" + age);
}
例外をキャッチして再スロー
一度catchで例外を捕まえた後、再度スロー(throw)して上位に伝えることもできます。
try {
DoSomething();
}
catch (Exception ex) {
Console.WriteLine("エラーをログに記録:" + ex.Message);
throw; // 元の例外をそのまま再スロー
}
独自の例外クラスを使う
public class MyCustomException : Exception {
public MyCustomException(string message) : base(message) { }
}
// 使用例
throw new MyCustomException("カスタムエラーが発生しました");
Javaとの違い:C#にはthrowsがない
- Javaでは、
throws
で「このメソッドは例外を投げます」と宣言する必要がある
- C#では、throws宣言は不要で、
throw
だけを使う
C#ではすべての例外処理は実行時(ランタイム)に発生し、コンパイル時に明示する必要はありません。
よく使われる例外クラス
ArgumentException
:不正な引数
NullReferenceException
:nullにアクセス
InvalidOperationException
:無効な操作
IndexOutOfRangeException
:配列の範囲外
まとめ
throw は、C#において例外を発生(スロー)させるためのキーワードです。
条件分岐と組み合わせることで、プログラムの異常を検出し、安全に通知・対処できます。
Javaのthrows
のような宣言は不要ですが、適切な例外の種類・メッセージを心がけると、より安全で分かりやすいコードになります!