try
исключение, или нет. Когда исключение не случилось в try
, но случилось в finally
, нет ничего интересного. Это исключение как обычно пойдет вверх по стеку вызовов, пока не попадется в соответствующий ему catch
.Вопрос подразумевает второй случай, когда исполнение попадает в
finally
в момент выброса исключения из try
. Исключение из finally заменит собой исключение из try и пойдет вверх по стеку вместо него. Оригинальная проблема будет попросту забыта.Такая маскировка исключения усложняет отладку, лучше избегать её. Например IntelliJ IDEA выводит соответствующее предупреждение на оператор
throw
внутри finally
.Все тонкости прохода исключения через try-catch-finally описаны в разделе 14.20.2 спецификации.