
Las clases de excepciones que define Java pueden ser ampliadas en las aplicaciones. Se pueden definir nuevas clases de excepciones para que así las aplicaciones tengan su específico control de errores. Las clases que se definan tienen que derivar de la clase base Exception, o bien directa o indirectamente.
Ejemplo
public class MiExcepcion extends Exception{. . .}
public class ArrayExcepcion extends NegativeArraySizeException{. . .}
Es habitual que la clase que se define tenga un constructor con un argumento cadena en el que se puede dar información sobre la anomalía generada. En ese caso, a través de super se llama al constructor de la clase base Exception.
public class MiExcepcion extends Exception{
public MiExcepcion(String info){
super(info);
System.out.println(«Constructor de la clase.»);
}
}
Las clases que definen las excepciones pueden tener cualquier tipo de atributo o método que ayude al manejo de la anomalía que representan. La siguiente clase guarda el tamaño con que se ha intentado dar tamaño a un array.
public class ArrayExcepcion extends NegativeArraySizeException{
int n;
public ArrayExcepcion(String mensaje, int t){
super(mensaje);
n=t;
}
public String Informa(){
return getMessage()+n;
}
}
Se pueden lanzar excepciones de tipo definido en las aplicaciones, por ejemplo:
int tamaño;
int []v;
tamaño = entrada.nextInt();
if(tamaño<=0)
throw new ArrayExcepcion(«Tamaño incorrecto: » + tamaño);
En aplicaciones complejas que lo requieren se puede definir una jerarquía propia de clases de excepciones, siempre la clase base ha de ser Exception. El siguiente esquema muestra una jerarquía para la aplicación Cajero:
public class CajeroException extends Exception{. . .}
public class CuentaException extends CajeroException{. . .}
public class LibretaException extends CajeroException{. . .}
public class CuentaCorrienteException extends CuentaException{. . .}