Cuando se produce un error se debería generar, o lanzar, una excepción. Para que un método en Java, pueda lanzar excepciones, hay que indicarlo expresamente.
void MetodoAsesino() throws NullPointerException,CaidaException
Se pueden definir excepciones propias, no hay por qué limitarse a las predefinidas; bastará con extender la clase Exception y proporcionar la funcionalidad extra que requiera el tratamiento de esa excepción.
También pueden producirse excepciones no de forma explícita como en el caso anterior, sino de forma implícita cuando se realiza alguna acción ilegal o no válida.
Las excepciones, pues, pueden originarse de dos modos: el programa hace algo ilegal (caso normal), o el programa explícitamente genera una excepción ejecutando la sentencia throw (caso menos normal). La sentencia throw tiene la siguiente forma:
throw ObtejoExcepction;
El objeto ObjetoException es un objeto de una clase que extiende la clase Exception.
El siguiente código de ejemplo origina una excepción de división por cero:
class melon { public static void main( String[] a ) { int i=0, j=0, k; k = i/j; // Origina un error de division-by-zero } }
Si compilamos y ejecutamos esta aplicación Java, obtendremos la siguiente salida por pantalla:
> javac melon.java > java melon java.lang.ArithmeticException: / by zero at melon.main(melon.java:5)
Las excepciones predefinidas, como ArithmeticException,
se conocen como excepciones runtime. Actualmente, como todas las
excepciones son eventos runtime, sería mejor llamarlas
excepciones irrecuperables. Esto contrasta con las excepciones
que generamos explícitamente, que suelen ser mucho menos
severas y en la mayoría de los casos podemos recuperarnos
de ellas. Por ejemplo, si un fichero no puede abrirse, preguntamos
al usuario que nos indique otro fichero; o si una estructura de
datos se encuentra completa, podremos sobreescribir algún
elemento que ya no se necesite.
|
[Anterior] [Indice] [Siguiente] |