Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > гонка try&finally


Автор: devmstr 11.9.2008, 09:45
try { return 1; } 
finally { return 2; }

Почему ответ будет 2?

Автор: Дрон 11.9.2008, 09:52
devmstr, вы сговорились? smile
Позавчера точно такая же тема была: http://forum.vingrad.ru/forum/topic-227316/kw-try-finaly-return.html

Автор: cube 11.9.2008, 10:01
Цитата(devmstr @ 11.9.2008,  09:45)
try { return 1; } 
finally { return 2; }

Почему ответ будет 2?

а че здесь непонятно?)
finally выполнится всегда, внезависимости выполнился ли блок try вообще, почитай спецификацию

Автор: Platon 11.9.2008, 11:18
cube, пустой аргумент.

Автор: cube 12.9.2008, 11:09
Цитата(Platon @ 11.9.2008,  11:18)
cube, пустой аргумент.

что значит пустой аргумент? читай
http://java.sun.com/docs/books/jls/second_edition/html/exceptions.doc.html
http://java.sun.com/docs/books/jls/second_edition/html/statements.doc.html#236653
http://java.sun.com/docs/books/jls/second_edition/html/exceptions.doc.html

Автор: Дрон 12.9.2008, 12:00
Я ещё раз говорю -- тема только что обсуждалась и там сначала я предположил, а потом w1nd дал отличный ответ, как оно работает:
Цитата(w1nd @ 9.9.2008,  13:01)
Как вообще работает return в ЯВУ очень хорошо показывает паскаль smile Заурядная там конструкция:
Код
Result := ...;
Exit;


Таким образом первый return записывает в некоторую внутреннюю переменную значение 1, потом выполняется блок finally, который перезаписывает эту переменную значением 2.


Автор: powerOn 12.9.2008, 12:35
Модератор: Закрыл тему ибо уже было. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)