Задачу решил, но есть вопрос
сам код:
public class Solution {
public static void main(String[] args) throws Exception {
try {
method1();
}
catch (Exception3 e3) {}
catch (Exception2 e2) {}
catch (Exception1 e1) {}
}
public static void method1() throws Exception1, Exception2, Exception3 {
int i = (int) (Math.random() * 3);
if (i == 0)
throw new Exception1();
if (i == 1)
throw new Exception2();
if (i == 2)
throw new Exception3();
}
}
class Exception1 extends Exception {
}
class Exception2 extends Exception1 {
}
class Exception3 extends Exception2 {
}
Почему именно в таком порядке:
catch (Exception3 e3) {}
catch (Exception2 e2) {}
catch (Exception1 e1) {}
Как я вижу: класс Exception3 унаследовал в себе все свойства и Exception2 и Exception1 и Exception, т.е. должен являться самым "широким" отлавливателем исключений и должен идти последним. Java думает ровно наоборот и я не понимаю эту логику.