Тип переменной блока multi-catch

Тип переменной блока multi-catch

Типом переменной, которая принимает объект-исключение в блоке multi-catch, является общий тип всех исключений, объявленных в этом блоке. Поэтому, если отлавливаемые исключения реализуют один и тот же интерфейс, то через переменную блока multi-catch можно получить доступ к его методам.


interface IException {
    String info();
}


class Exception1 extends IOException implements IException {
    @Override
    public String info() {
        return "I'm Exception1";
    }
}


class Exception2 extends Exception implements IException {
    @Override
    public String info() {
        return "I'm Exception2";
    }
}


class Test {
    public static void main(String args[]) {
        try {
            int a = 10;
            switch(a) {
                case 10: throw new Exception1();
                case 0: throw new Exception2();
            }
        } catch (Exception1 | Exception2 ex) {
            System.out.println(ex.info());
        }
    }
}
Исключения