Sealed Exception

Zheka Kozlov orionllmain at gmail.com
Fri Sep 24 08:30:54 UTC 2021


Hi!

Java 17 compiler forces me to insert an unreachable catch block for the
base Exception:

public static void main(String[] args) {
    try {
        f();
    } catch (Ex1 e) {
        e.printStackTrace();
    } catch (Ex2 e) {
        e.printStackTrace();
    } catch (BaseEx e) {
        // Unreachable
    }
}

private static void f() throws BaseEx {
}

sealed abstract class BaseEx extends Exception permits Ex1, Ex2 {
}

Otherwise it doesn't compile. Was this decision intentional? If yes, why?
If not, can we fix it? I see this as an unfortunate limitation.

With best regards, Zheka Kozlov.


More information about the amber-dev mailing list