エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

【OCPJ】マルチキャッチは暗黙的例外

きっかけ

OCPJ11 Goldの勉強をしている際、マルチキャッチの問題を解いた際に間違えたので載せる。

テストコード

public class Ocpj3_9 {
    public static void main(String[] args) {

        try{
            throw new Ex1();
        }catch (Ex1 | RuntimeException e) {
            // eは暗黙的にfinal!!
        }
    }

    static class Ex1 extends Exception {

    }

    static class Ex2 extends Ex1 {

    }
}

varが導入されたので、再代入可能かと思ってしまったが、

参考リンク

複数の例外型のキャッチと型チェックが改善された例外再スロー

小さく注記で複数の例外型を処理する場合、catchパラメータは暗黙的にfinalになりますって書いてあるのを見て、怒りが爆発するところだった。

所感

実行時に型が決まるのだろうか?
エディタ上で見る限りは、複合型のようだったが、ここら辺の仕組みはどうなっているのだろうか?
型に厳密な言語である理解でいるのだが、ここら辺が少しあいまいになっているなぁ~と感じた。