Sunteți pe pagina 1din 7

Manejo de excepciones en JAVA

Diego Larios

Que es una excepcin?


Una Excepcin en programacin es una situacin poco habitual que provoca resultados inesperados o incoherentes en nuestros mtodos, pero que es contemplada en el anlisis, diseo y construccin de nuestro sistema: el sistema se puede recuperar de estas situaciones.

Excepciones en JAVA
Existen dos grandes tipos de excepciones en Java: Checked Exceptions (excepciones controladas). Se corresponden a errores previstos, controlados en el cdigo y por tanto permite al sistema recuperarse. Son lo que hemos definido anteriormente como excepciones. El compilador Java es una gran ayuda ya que te obliga a capturarlas en un bloque try - catch - finally o a declarar que el mtodo puede devolver una excepcin (declarando un throws).

Continuacin

Unchecked Exceptions (excepciones no controladas). Son excepciones no previstas ni controladas, y por tanto puede provocar inconsistencia de datos y la finalizacin inesperada del sistema : lo que hemos definido anteriormente como errores en tiempo de ejecucin. En Java se implementan como subclases de java.lang.RuntimeException (que a su vez hereda de java.lang.Exception) y el compilador no nos obliga a capturarlas ni a declarar que nuestros mtodos pueden lanzarlas. NullPointerException o IllegalArgumentException son dos ejemplos de estas excepciones.

La utilizacin de bloques try - catch - finally es ms costoso en trminos de tiempo de ejecucin y recursos que la utilizacin de bloques if - else. Por tanto es recomendable utilizar excepciones para controlar el flujo, es mejor utilizar los mecanismos de control de flujo ya existentes que consumen menos y son ms fcilmente mantenibles. Tampoco es recomendable capturar una excepcin en un bloque catch y no hacer nada, o no hacer nada ms que lanzarla nuevamente.

Es aconsejable que las excepciones no rompan la encapsulacin. Por ejemplo si en una capa inferior se produce una excepcin (por ejemplo una SQLException en la capa de persistencia), a la capa superior no le interesa conocer los detalles de implementacin, sino: si se puede recuperar del error, es aconsejable transformar la excepcin original en otra excepcin controlada ochecked con la informacin necesaria para recuperar que la capa superiro se pueda recuperar. o si no puede recuperarse del error pasamos a la capa superior una excepcin no controlada o unchecked si no se debe continuar el flujo normal, o bien un resultado nulo si no se quiere hacer nada especial.

Slo deberamos de crear excepciones propias cuando aporten algo til como informacin extra cuando sean capturadas o comportamientos propios (como un tratamiento especial en un log). Al capturar excepciones tambin capturamos las que heredan de sta. Por tanto al capturar una excepcin del tipo java.lang.Exception tambin estamos capturando todas las unchecked (ya que heredan de java.lang.RuntimeException y sta hereda de java.lang.Exception). Hay que tener cuidado de si esto es realmente lo que queremos.

S-ar putea să vă placă și