続・とってもわかりやすいJAVA 【第26回 例外処理⑤】


今回はthrowキーワードを紹介します。

例外はすべてクラスとして定義されていました。
したがって例外オブジェクトを作ることも可能です。
それを利用すれば明示的に例外を発生させることができます。
その際、例外オブジェクトを投げるのがthrowキーワードです。
throwという名前そのまんまですね。

構文は以下の通り。
throw new 例外クラス();
一度変数に格納してもOKです。

ではサンプルを作ってみましょう。

ThrowSample_01.java

class ThrowSample_01 {
    public static void main(String[] args) {
        throw new ArithmeticException();
    }
}

実行結果

ThrowsSample_01

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は発生しません。
割ってみるとこんな結果になります。

実行結果

ThrowsSample_02

かっこいいですね。
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;
    }
}

実行結果

ThrowsSample_03

throwで投げられた例外をキャッチして処理しました。
こうすればInfinityではなく、例外として処理できますね。

  • このエントリーをはてなブックマークに追加

PAGE TOP