34. 例外操作

34. 例外操作

例外が発生したメソッド内で例外処理

l:\lesson084\test.java

class test {
    public static void main(String args[]) {
        try {
            first();
        }
        catch (ArithmeticException err) {
            System.out.println("てめぇは俺よりバカだった…\n" + err);
        }
    }

    static void first() {
        try {
            second();
        }
        catch (ArithmeticException err) {
            System.out.println("たったひとつのシンプルな答えだ");
        }
    }

    static void second() {
        try {
            System.out.println(10 / 0);
        }
        catch (ArithmeticException err) {
            System.out.println("エラーの原因はたった一つ");
        }
    }
}

実行結果

L:\lesson084>java test
エラーの原因はたった一つ

例外のthrow

l:\lesson085\test.java

class test {
    public static void main(String args[]) {
        try {
            first();
        }
        catch (ArithmeticException err) {
            System.out.println("てめぇは俺よりバカだった…\n" + err);
        }
    }

    static void first() {
        try {
            second();
        }
        catch (ArithmeticException err) {
            System.out.println("たったひとつのシンプルな答えだ");
            throw err;
        }
    }

    static void second() {
        try {
            System.out.println(10 / 0);
        }
        catch (ArithmeticException err) {
            System.out.println("エラーの原因はたった一つ");
            throw err;
        }
    }
}

実行結果

L:\lesson085>java test
エラーの原因はたった一つ
たったひとつのシンプルな答えだ
てめぇは俺よりバカだった…
java.lang.ArithmeticException: / by zero

明示的な例外の発生

l:\lesson086\test.java

class test {
    public static void main(String args[]) {
        try {
            throw new ArithmeticException();
        }
        catch(ArithmeticException err) {
            System.out.println("例外が発生しました :" + err);
        }
    }
}

実行結果

L:\lesson086>java test
例外が発生しました :java.lang.ArithmeticException