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