今回は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ではなく、例外として処理できますね。