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