Agregar estructuras de control y retornos a los bloques finalmente {} son solo otro ejemplo de abusos "solo porque puedes" que se encuentran dispersos en prácticamente todos los lenguajes de desarrollo. Jason tenía razón al sugerir que podría convertirse fácilmente en una pesadilla de mantenimiento: los argumentos en contra de los primeros retornos de las funciones se aplican más a este caso de "retornos tardíos".
Finalmente, existen bloques para un propósito, para permitirle ordenar completamente por sí mismo, sin importar lo que sucedió en todo el código anterior. Principalmente, esto es cerrar / liberar punteros de archivos, conexiones de bases de datos, etc., aunque pude ver que se estira para decir que se agrega una auditoría a medida.
Cualquier cosa que afecte el retorno de la función debería estar en el bloque try {}. Incluso si tuviera un método mediante el cual verificó un estado externo, realizó una operación que consume mucho tiempo, luego verificó ese estado nuevamente en caso de que se volviera inválido, aún querría la segunda verificación dentro del intento {}, si finalmente se quedó adentro {} y la operación larga falló, entonces verificaría ese estado por segunda vez innecesariamente.