viernes, 19 de junio de 2020

Excepciones

Durante el proceso de ejecución de un programa se encuentran comportamientos anómalos del programa como fallos o errores que requieren ser tratados de alguna manera.

En JAVA se emplean las excepciones que permiten manejar estos errores y evitar que el programa simplemente los ignore o deje de funcionar.


Excepción

Es un evento que ocurre durante la ejecución de un programa que interrumpe el flujo normal de las instrucciones o sentencias.

También, según la terminología JAVA, se llama así al objeto que contiene la información de la falla de un programa.

Clic en la imagen para agrandarla

Lanzamiento de una excepción

Es un mecanismo que informa al usuario que ha ocurrido un fallo que este no puede ignorar, en caso no se de tratamiento adecuado al fallo el programa termina inmediatamente.

Se puede implementar en cualquier método o función, pues es independiente del valor de retorno.



Clase Exception

Las excepciones pueden pertenecer a las clase ERROR o la clase EXCEPTION, la primera indica fallos graves. La segunda son fallos menos severos que pueden ser manejados.

Las excepciones del tipo EXCEPTION son clasificados en: excepciones comprobadas y no comprobadas. De estas heredan múltiples clases.



Excepciones "Checked" y "Unchecked"

La diferencia entre estas es que las excepciones comprobadas (Checked Exceptions) y las excepciones no comprobadas (Unchecked Exceptions) es que las excepciones comprobadas deben declararse en un método o constructor si pueden ser lanzadas por la ejecución de alguno de estos y propagarse fuera del límite de estos. Ya que son considerados fallos esperados en la ejecución del programa.

Ejemplos de fallos esperados:
  • Se intenta escribir en el disco, pero este se encuentra lleno.
  • Se quiere cargar un archivo, pero no existe.


Bloque TRY-CATCH

Permite definir sentencias que pueden lanzar excepciones dentro del bloque TRY, y las excepciones capturadas en un CATCH. Además, se puede definir un método FINALLY que ejecutará sentencias existan o no excepciones.

Estos bloques pueden ser sin o con recursos.


Sin recursos Con recursos
try {
   /* Código que se debe ejecutar, 
      que puede producir una excepción */
} catch ([Clase de excepción] e) {
   /* Código que se ejecuta si 
      ocurre una excepción */
} finally {
   /* Código que se ejecuta si 
      ocurre una excepción */
}
try ([Recursos]) {
   /* Código que se debe ejecutar, 
      que puede producir una excepción */
} catch ([Clase de excepción] e) {
   /* Código que se ejecuta si 
      ocurre una excepción */
} finally {
   /* Código que se ejecuta si 
      ocurre una excepción */
}



Recursos

  • Son los objetos que implementan a la interfaz java.lang.AutoCloseable, que incluye a la vez a todos los objetos que implementan a la interfaz java.io.Closeable.
  • Estos objetos comparten un método en común que es el close().
  • En versiones anteriores al JDK 1.8 se declara el objeto antes del TRY, y se debe cerrar en el FINALLY.
  • Del JDK 1.8 en adelante, se puede declarar como recurso inmediatamente después de la palabra reservada TRY entre paréntesis y ya no es necesario aplicarle el método close().
  • Se puede declarar múltiples recursos a la vez y se puede seguir empleando el bloque FINALLY para lo que se considere necesario.

Clic en la imagen para agrandarla




Fuentes

  • Evans, B. J. y Flanagan, D. (2015) Java in a Nutshell (6a ed.). EUA: O’Reilly Media.
  • BARNES, D. y KÖLLING, M. (2007). Programación orientada a objetos con Java. Una introducción práctica usando BlueJ (3a ed.). Madrid: PEARSON EDUCACIÓN.
  • Oracle. (s.f.). Interface Autoclosable. Recuperado de: https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html
  • Oracle. (s.f.). The try-with-resources Statement. Recuperado de: https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

No hay comentarios:

Publicar un comentario