Добавление управляющих структур и возврат к блокам finally {} - это еще один пример злоупотреблений «просто потому, что вы можете», которые распространены практически на всех языках разработки. Джейсон был прав, предполагая, что он легко может стать кошмаром обслуживания - аргументы против раннего возврата из функций более применимы к этому случаю «позднего возврата».
Наконец, существуют блоки для одной цели, чтобы вы могли полностью привести себя в порядок, независимо от того, что произошло во всем предыдущем коде. В основном это закрытие / освобождение файловых указателей, соединений с базой данных и т. Д., Хотя я мог видеть, что это растягивается, чтобы добавить добавление в сделанный на заказ аудит.
Все, что влияет на возврат функции, должно лежать в блоке try {}. Даже если у вас есть метод, с помощью которого вы проверяете внешнее состояние, выполняете трудоемкую операцию, а затем снова проверяете это состояние в случае, если оно становится недействительным, вы все равно хотели бы провести вторую проверку внутри попытки {} - если бы она находилась внутри, наконец, {} и длительная операция завершилась неудачно, вы бы без необходимости проверяли это состояние во второй раз.