В предыдущих версиях java, реорганизация исключения рассматривалась как бросание типа параметра catch.
Например:
public static void test() throws Exception{
DateFormat df = new SimpleDateFormat("yyyyMMdd");
try {
df.parse("x20110731");
new FileReader("file.txt").read();
} catch (Exception e) {
System.out.println("Caught exception: " + e.getMessage());
throw e;
}
}
В Java 7 вы можете уточнить об исключении, если вы объявите исключение final
:
//(doesn't compile in Java<7)
public static void test2() throws ParseException, IOException{
DateFormat df = new SimpleDateFormat("yyyyMMdd");
try {
df.parse("x20110731");
new FileReader("file.txt").read();
} catch (final Exception e) {
System.out.println("Caught exception: " + e.getMessage());
throw e;
}
}
Мой вопрос. Документы говорят, что мне нужно объявить Exception final
. Но если я этого не делаю, код выше все еще компилируется и работает. Я что-то упускаю?
Литература:
Монета проекта: многопользовательское и окончательное ретронирование
Добавить более гибкую проверку повторных исключений