static int retIntExc() throws Exception{
int result = 1;
try {
result = 2;
throw new IOException("Exception rised.");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println(e.getMessage());
result = 3;
} finally {
return result;
}
}
Мой друг является разработчиком .NET и в настоящее время мигрирует на Java, и он задает мне следующий вопрос об этом источнике. Теоретически это должно throw IOException("Exception rised.")
, а весь метод retIntExc()
должен throws Exception
. Но ничего не происходит, метод возвращает 2.
Я не проверял его пример, но думаю, что это не ожидаемое поведение.
РЕДАКТИРОВАТЬ: Спасибо за все ответы. Некоторые из вас игнорируют тот факт, что метод называется retIntExc
, что означает, что это всего лишь некоторый тестовый / экспериментальный пример, показывающий проблему в механике броска / ловли. Мне не нужно было исправлять, мне нужно было объяснить, почему это происходит.