Возвращаемое значение в блоках try catch finally в java
Мне нужно объяснение для приведенного ниже кода.
public static void main(String[] args) { System.out.println(methodReturningValue()); } static String methodReturningValue() { String s = null; try { s = "return value from try block"; return s; } catch (Exception e) { s = s + "return value from catch block"; return s; } finally { s = s + "return value from finally block"; } } } public class ReturnValueFromTryCatchFinally {
Что я уже пробовал:
Я понимаю, что finally block будет выполняться всегда и так, что значение s будет "return value from try block return value from finally block". Но приведенный выше код дает мне значение s из блока try. i.e; возвращаемое значение из блока try. Почему значение s возвращается из блока try? Насколько я знаю, блок Finally всегда будет выполняться. Так не изменится ли значение s? Есть ли что-нибудь, что мне нужно понять о области действия переменной внутри блока try, catch?
Richard MacCutchan
Потому что вы используете return в блоке try. И предложение finally выполняется после окончания блока try. Используйте свой отладчик, чтобы увидеть фактическую последовательность событий.