Los bloques try-catch-finally en Java

Para que un programa Java sea lo más robusto posible, debe ser capaz de manejar excepciones. El compilador hace su parte al no permitirle compilar un programa hasta que sea sintácticamente correcto y también puede señalar excepciones comprobadas que deben manejarse. Pero las excepciones que probablemente causen más dolores de cabeza son las que aparecen una vez que el programa se está ejecutando. Para ayudar a manejar estas excepciones, el lenguaje Java proporciona los bloques try-catch-finally.

El bloque de prueba

los

tratar
el bloque encierra cualquier declaración que pueda causar una excepción. Por ejemplo, si está leyendo datos de un archivo utilizando el
FileReader
clase, se espera que manejes el
IOExceptions
asociado con el uso de un
FileReader
objeto, por ejemplo,
FileNotFoundException
y
IOException
. Para asegurarse de que esto suceda, puede colocar las declaraciones que se ocupan de crear y usar el
FileReader
objeto dentro de un
tratar
bloque: Sin embargo, el código está incompleto porque, para que se maneje la excepción, necesitamos un lugar para que se capture. Esto sucede en el

bloque de captura. El bloque de captura

los

captura
los bloques proporcionan un lugar para manejar la excepción generada por las declaraciones dentro de un
tratar
bloquear. los
captura
el bloque se define directamente después del
tratar
bloquear. Debe especificar el tipo de excepción que está manejando. Por ejemplo, el
FileReader
El objeto definido en el código anterior es capaz de arrojar un
FileNotFoundException
o un
IOException
. Podemos especificar dos
captura
bloques para manejar ambas excepciones: en el
FileNotFoundExceptioncatch
bloqueamos podríamos colocar un código para pedirle al usuario que encuentre el archivo por nosotros y luego intente leer el archivo nuevamente. En el
IOException
catch block, podríamos pasar el error de E / S al usuario y pedirle que pruebe otra cosa. De cualquier manera, hemos proporcionado una forma para que el programa detecte una excepción y la maneje de manera controlada.
En Java SE 7, se hizo posible manejar múltiples excepciones en una
captura
bloquear. Si el código que quisiéramos colocar en los dos
captura
los bloques anteriores eran exactamente los mismos, podríamos escribir el código de esta manera: para hacer un poco de limpieza en lo que respecta a los recursos, podemos agregar un bloque finalmente. Después de todo, queremos publicar el archivo que hemos estado leyendo una vez que hayamos terminado.

El finalmente bloque

Las declaraciones en el bloque finalmente siempre se ejecutan. Esto es útil para limpiar recursos en caso de que el bloque try se ejecute sin una excepción y en los casos en que haya una excepción. En ambas eventualidades, podemos cerrar el archivo que hemos estado usando. 

El último bloque aparece directamente después del último bloque de captura: