martes, 20 de mayo de 2008

Excepciones

Para poder lanzar una excepción, hay que extender la clase java.lang.Exception, la cual deriva de la clase Throwable; su jerarquía de clases es la siguiente:

Dentro de la clase Exception se pueden distinguir, la clase RuntimeException, relacionada con errores de programación (excepciones implícitas), y el resto de clases derivadas de Exception (excepciones explícitas) que Java obliga a tratar si se producen.

Son las excepciones implícitas las que se emplean para la detección de errores y que ocurren durante la ejecución del programa que interrumpe el flujo normal de las sentencias y lanza un throw (excepción) que nosotros debemos capturar mediante un catch y así solucionar el error. Se producen por lo general durante la ejecución,aunque lo suyo sería que sucediera durante la compilación.

Ejemplo de bloque try/catch:




Hay veces en los que el código de un método puede generar una excepción y no se desea incluir en ese método la gestión del error. Para estos casos Java permite que el método pase o relance la excepción al método desde el que ha sido llamado, sin incluir en el método los bucles try/catch; esto se consigue con la inclusión de la pablabra throws más el nombre de la Excepción, después de la lista de argumentos del método. Aun así, en el método superior habría que incluir los bloques try/catch o volver a pasar la excepción:

void método2() throws IOException, MyException {
   ...
   //código que puede lanzar las excepciones IOException y MyException
   ...
}//Fin del método

Ejemplo de intento de conexión a un blog empleando una excepción en el caso que el acceso mediante coreeo electrónico y clase no fuese correcto: ConectionTest.java

3 comentarios:

Juan Antonio Ruz dijo...

perfecta la definición!
solo una cosa la clase es java.lang.Exception y no System.exception
Lo de llamar a una excepción evento que interrumpe el flujo del programa me parece perfecto!

rafakatu dijo...

ok, corregido. La verdad es que me he ayudado un poco de un manual, aunque lo he entendido.

rafakatu dijo...

post modificado y mejorado