finally, нелинейность выполнения

166
23 марта 2017, 19:18

Что позволяет finally изменять нормальный поток управления внутри метода? Какой задействован механизм?

Answer 1

Ну собственно сам язык и позволяет.

Сначала выполняется блок внутри try, затем, если исключений не возникло, finally. А вот return по сути состоит из двух действий - помещения куда-то результата и собственно возврат из метода. В случае finally он оказывается между ними. По сути, вторую часть - непосредственно возврат - можно рассматривать как позицию закрывающей фигурной скобки метода - в таком случае диссонанса с finally не возникает. Кстати, можно заметить, что большинство ide позволяют ставить breakpoint на эту скобку и останавливаются на нём как раз после return.

Джавы под рукой нет, но вот гифка для шарпа:

READ ALSO
связать Java и Sql Server [требует правки]

связать Java и Sql Server [требует правки]

Нужна помощь, есть программа написанная на Java, которая должна отправлять запрос на другой компьютер на котором есть sql server и получать ответТак...

160
Оптимизация Java-кода

Оптимизация Java-кода

Необходимо оптимизировать ниже приведенный кусок кодаВ данный момент есть несколько условий, при выполнении которых изменяется видимость...

204
Как запустить одновременно два потока?

Как запустить одновременно два потока?

Как можно запустить одновременно два потока (не дожидаясь завершения одного из них) на Java?

293