¿Por qué este código hacemos de esta manera?
Porque aparentemente el código no sabe cómo manejar las excepciones en este nivel. Eso está bien - siempre que lo haga una de las personas que llaman, es decir, siempre que la excepción finalmente se maneje en alguna parte.
A menudo, el código de bajo nivel no puede reaccionar adecuadamente a las excepciones porque el usuario necesita ser notificado, o la excepción debe registrarse, o se debe probar otra estrategia. El código de bajo nivel realiza uno funciona solamente y no sabe acerca de la toma de decisiones de alto nivel.
Pero el código todavía necesita limpiar sus recursos (porque si no lo hace, podrían filtrarse), por lo que hace precisamente eso en la cláusula finally
, asegurándose de que siempre sucede, si una excepción era arrojado o no.
de uso general con bloqueos como en: lock.lock(); intenta {/ * bloqueado * /} finalmente {lock.unlock()} – mins