今回はthrowキーワードを紹介します。
例外はすべてクラスとして定義されていました。
したがって例外オブジェクトを作ることも可能です。
それを利用すれば明示的に例外を発生させることができます。
その際、例外オブジェクトを投げるのがthrowキーワードです。
throwという名前そのまんまですね。
構文は以下の通り。
throw new 例外クラス();
一度変数に格納してもOKです。
ではサンプルを作ってみましょう。
■ThrowSample_01.java
class ThrowSample_01 {
public static void main(String[] args) {
throw new ArithmeticException();
}
}
■実行結果
ArithmeticExceptionが発生しました。
これは0で除算したときに投げられる例外でした。
この部分を別の例外クラスに変えると、その例外が発生します。
では一体どんな場面で使うのか一つ例を挙げてみます。
■ThrowSample_02.java
class ThrowSample_02 {
public static void main(String[] args) {
double x = 10.0;
double y = 0.0;
System.out.println(x / y);
}
}
実は0.0割ってもArithmeticExceptionは発生しません。
割ってみるとこんな結果になります。
■実行結果
かっこいいですね。
Infinityです。
無限です。
限り無しです。
ただ実際Infinityと計算されるより、これは例外として処理したいです。
そういった場合にthrowを使います。
■ThrowSample_03.java
class ThrowSample_03 {
public static void main(String[] args) {
try {
System.out.println(divide(10.0, 0.0));
} catch (ArithmeticException ae) {
System.out.println("0で割ることはできません");
}
}
static double divide(double x, double y) {
if (y == 0.0) {
throw new ArithmeticException();
}
return x / y;
}
}
■実行結果
throwで投げられた例外をキャッチして処理しました。
こうすればInfinityではなく、例外として処理できますね。


