
Типом переменной, которая принимает объект-исключение в блоке 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());
}
}
}