lunes, 23 de mayo de 2011

Puntos extras clase rExcepciones java

¿Qué son?
Mecanismo de control de errores en tiempo de ejecución Una forma de hacer que la aplicación continúe la ejecución si se produce un error
¿Qué sucede si no se puede abrir un fichero?
¿Qué pasa si un socket se cierra de manera inesperada? 
¿Y si dividimos por cero?
¿Para qué sirven?
A veces se usan para detectar situaciones inusuales en la ejecución Si se controlan todos los posibles errores directamente, el código se puede volver
ilegible Con las excepciones se separa el código de un método del código que controla los errores Como casi todo lo demás en java, las excepciones son objetos (que se crean cuando ocurre una situación anormales) Se lanzan para que otra parte del código las capture y las trate 

Las excepciones que se derivan de Error suelen estar relacionadas con lamáquina virtual y no se espera que se capturen ni se traten Las Excepciones derivadas de Exception sí que deben ser tratadas, y en algunos casos es obligatorio hacerlo para que el programa compile

El código que puede generar la excepción debe encerrarse dentro de un bloquetry
try
{
// Código que puede generar la excepción
}
A continuación, la excepción se captura con un
bloque catch
catch (Exception e)
{
// Código para tratar el error
}


El código dentro del try puede generar más de una excepción, y se pueden capturar todas
ellas
try
{
//Código que puede provocar el error
}
catch(IOException ioe)
{
//Código para tratar la IOException
}
catch(Exception e)
{
//Código para tratar la Exception
}

Se puede capturar una excepción utilizando un tipo de excepción más general
try
{
//Código que produce una excepción de tipo IOException
}
catch (Exception e)
{
//Código para tratar una Exception
}

Esto último se puede hacer gracias a que unas excepciones heredan de otras
Sólo se puede hacer con excepciones dentro de la misma jerarquía Sirve para tratar de manera común varios tipos de excepciones distintos


CUIDADO: Si un bloque de código lanza varias excepciones y se usan varios catch
La excepción se captura en el primer catch que se ajusta a la excepción
Los catch deben capturar las excepciones más concretas en primer lugar, y las más generales al final Si no lo hacemos así, hay bloques catch en los que no se entrará nunca



A veces, cuando se produce una excepción, la aplicación queda es un
estado inestable Al tratamiento de una excepción se le puede añadir al final un bloque finally que se ejecuta siempre, se produzcan o no excepciones Se puede usar para cerrar ficheros, liberar recursos, etc.
try
{
//código que genera excepciones
}
catch(IOException ioe)
{
//tratamiento de la excepción
}
finally
{
//código que se ejecuta siempre
}


Lanzar excepción
Esto se hace utilizando la palabra reservada throws en la cabecera del método 

public void miMetodo() throws ArithmeticException

Posteriormente, en el código, se puede lanzar una excepción usando la palabra reservada
throw
catch (IOException ioe)
{
throw ioe;
}
...
throw new NullPointerException();

No hay comentarios:

Publicar un comentario