Я прочитал в книге по Java, что «Java не позволит вам объявить блок catch для проверенного типа исключения, который потенциально не может быть выдан телом класса try».
Это имеет смысл до сих пор.
Но теперь я спрашиваю себя, почему этот код компилируется:
try {
throw new Exception();
} catch (IOException e) {
} catch (Exception e) {
}
Java позволяет мне ловить IOException
, но, очевидно, он никогда не будет брошен блоком try.
Не нарушает ли этот пример правило, описанное в книге по Java?