В предыдущих версиях 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;
}
}
Мой вопрос : в документации сказано, что мне нужно объявить исключение окончательный
. Но если я этого не сделаю, приведенный выше код все равно компилируется и работает. Я что-то упускаю?
Ссылки:
Project Coin: многократный захват и окончательное повторное выбрасывание
Добавление более гибкой проверки на повторное создание исключений