Вчера я прочитал эту статью о новой обработке исключений в Java 7.
В статье показан пример (№ 4), который не работает в Java 6. Я простоскопировал его.
public class ExampleExceptionRethrowInvalid {
public static void demoRethrow()throws IOException {
try {
// forcing an IOException here as an example,
// normally some code could trigger this.
throw new IOException("Error");
}
catch(Exception exception) {
/*
* Do some handling and then rethrow.
*/
throw exception;
}
}
public static void main( String[] args )
{
try {
demoRethrow();
}
catch(IOException exception) {
System.err.println(exception.getMessage());
}
}
}
Как и в описанной статье, он не будет компилироваться из-за несоответствия типов -throws IOException- и -throw exception-.В Java 7 так и будет.Итак, мой вопрос.
Как правильно реализовать такого рода перебрасывание исключения в Java 6?Мне не нравится предложенный пример реализации № 5.Я знаю, что это вопрос вкуса и проблемы, с которыми вы пытаетесь справиться, если нет проверенных исключений или нет.Итак, что я могу сделать, чтобы получить исключение IOException и сохранить трассировку стека?Должен ли я изменить только улов на IOException и рискнуть не всех уловить?
Мне любопытны ваши ответы.