Insights

Capitulo 7 - Certificacion Java

Photo of the author: Camilo Nova

Camilo Nova

  •  

2 min read.

Excepciones y aserciones.

Las excepciones de tipo 'Runtime' no son marcadas por el compilador, y no es necesario que el programador las maneje, aunque no es prohibido que lo haga.

Un bloque de codigo 'catch' solamente es ejecutado si atrapa una excepcion que provenga de un bloque 'try' correspondiente.

Una vez que la ejecucion del programa alcanza un bloque 'try' y una excepcion ocurre, el bloque 'finally', si existe, es siempre ejecutado independientemente si fue o no capturada una excepcion, a menos que, bajo circunstancias extremas como un llamado a System.exit() ocurran.

Hay dos reglas en la ejecucion de bloques 'catch'

  1. Solamente un bloque 'catch' relevante a la excepcion y encontrado primero por el control de ejecucion, sera el bloque ejecutado para dicha excepcion.
  2. Los bloques 'catch' mas especificos (de menor jerarquia en el arbol de clases) deben preceder a los menos especificos (los mas generales). La violacion a esta regla genera un error de compilacion.

Una excepcion puede ser tratada solo por un bloque 'catch', donde en dicho bloque en sus parentesis debe existir la clase que representa la excepcion en si misma.

Si una excepcion no es capturada por ningun bloque 'catch', una de las siguientes acciones ocurre:

  • Si no hay un bloque 'finally', la ejecucion se detiene en el punto donde se lanzo la excepcion y retorna al metodo que la llamo.
  • Si hay un bloque 'finally' la ejecucion salta del punto donde se lanzo la excepcion al bloque 'finally' y retorna al metodo que la llamo luego del bloque 'finally'.

Si una excepcion es capturada por un bloque 'catch', caso contrario al anterior, ocurre uno de los siguientes casos:

  • Si existe un bloque 'finally', el control de ejecucion ejecuta el bloque 'catch' y luego el 'finally', para luego continuar con el metodo que la llamo.
  • Si no existe un bloque 'finally', pasa a ejecutar el bloque 'catch' y luego continua con el metodo que la llamo.

El bloque 'try' debe estar seguido bien de un bloque 'catch' o 'finally', o ambos. El bloque 'try' por si mismo es ilegal. Cualquier bloque 'catch' debe estar precedido de un bloque 'try', y un bloque 'finally' debe continuar luego del ultimo bloque 'catch' o del bloque 'try' si no existe un bloque 'catch'.

Se debe tener en cuenta al momento de sobrecargar un metodo que lanze una excepcion:

  1. Si el metodo a sobrecargar no lanza ninguna excepcion, el metodo que sobrecarga no puede lanzar ninguna excepcion, pero aun asi podra lanzar una excepcion en ejecucion.
  2. Si el metodo a sobrecargar lanza alguna excepcion, es legal para el metodo que sobrecarga no lanzar ninguna excepcion.

Para ejecutar un programa con aserciones se pasa el parametro -ea (enableassertions) al momento de ser ejecutado.

Es clave recordar que las aserciones deben ser usadas unicamente con propositos de pruebas y no debe confiarse en ellas para una aplicacion en produccion.

Learn more by receiving an email once a month.

Additional Insights

Ejemplo Aserciones (Assert) Java

El siguiente es un ejemplo de una asercion en java, que permite realizar pruebas sobre el codigo, sobretodo en la etapa de ve...

Author Camilo Nova Camilo Nova

Capitulo 6 - Certificacion Java

El argumento legal de una estructura if() es 'boolean'. Esto quiere decir que lo comprendido en el paréntesis debe dar como r...

Photo of the author: Camilo Nova Camilo Nova

Capitulo 5 - Certificacion Java

La relación de herencia 'extends' es llamada "es un". Si jaguar extiende de vehículo, entonces jaguar "es un" vehículo.La rel...

Photo of the author: Camilo Nova Camilo Nova