Para facilitar la programación de casos excepcionales Java usa el concepto de lanzar excepciones.
Una excepción es una clase predefinida y se accede con la sentencia
try { ... }
catch (SomeExceptionObject e) { ... }
catch (AnotherExceptionObject e) { ... }
finally { ... }
Normalmente se extiende la clase Exception para implementar clases propias de excepciones, aún también se puede derivar directamente de la clase Throwable que es la super-clase (interfaz) de Exception o de la clase RuntimeException.
class MyException extends Exception {
public MyException() { super(); }
public MyException(String s) { super(s); }
}
Entonces, una excepción no es nada más que un objeto que se crea en el caso de aparición del caso excepcional. La clase principal de una excepción es la interfaz Throwable que incluye un String para mostrar una línea de error leíble.
Para que un método pueda lanzar excepciones con las try-catch-finally-sentencias, es imprecindible declarar las excepciones posibles antes del bloque de código del método con throws ....
Durante la ejecución de un programa se propagan las excepciones desde su punto de aparición subiendo las invocaciones de los métodos hasta que se haya encontrado un bloque catch que se ocupa en tratar la excepción. En el caso de que no haya ningún bloque responsable, la excepción será tratada por la máquina virtual con el posible resultado de abortar el programa.
Se pueden lanzar excepciones directamente con la palabra throw y la creación de un nuevo objeto de excepción, p.ej.,
También los constructores pueden lanzar excepciones que tienen que ser tratados en los métodos que usan dichos objetos construidos.
Además de las excepciones así declaradas existen siempre excepciones que pueden ocurrir en qualquier momento de la ejecución del programa, p.ej., RuntimeException o Error o IndexOutOfBoundException. La ocurrencia de dichas excepciones refleja normalmente un flujo de control erróneo del programa que se debe corrigir antes de distribuir el programa a posibles usuarios.
Se usan excepciones solamente para casos excepcionales, es decir, si pasa algo no esperado.