70.    Exception (clase) java.lang.Exception

Es una clase como fundamental dentro de la jerarquía de clases que definen objetos que se pueden lanzar.

    java.lang.Throwable

        Error

            VirtualMachineError

            ...

        Exception

            ClassNotFoundException

            DataFormatException

            IOException

            NoSuchFieldException

            NoSuchMethodException

            ...

            RuntimeException

                ArithmeticException

                ClassCastException

                IllegalArgumentException

                IllegalStateException

                IndexOutOfBoundsException

                NegativeArraySizeException

                NoSuchElementException

                NullPointerException

                UnsupportedOperationException

                ...

 

La relación completa de clases es interminable. Las anteriores son algunas de las más comunes, invitándose al programador a desarrollas sus propias clases, subclases de las anteriores, sabiendo que

·         las clases que hereden de  RuntimeException no necesitan declararse en la cabecera de los métodos: se utilizan para errores imprevistos tales como errores del programador

·         las clases que hereden de Exception sí deben declararse en la cabecera de los métodos que deseen propagarlas (la única alternativa es capturarlas dentro del método). Se utilizan para errores previstos por la aplicación: datos erróneos para los que se sabe qué hacer cuando se presentan

La clase Exception proporciona algunos métodos interesantes:

void printStackTrace()

imprime la traza: serie de métodos llamados sucesivamente para llegar al punto donde se crea. Lo normal es crear el objeto cuando se produce la circunstancia que provoca su lanzamiento, de forma que la traza indica la serie de llamadas a métodos que llevan a la ocurrencia de la incidencia reportada.

Exception()                  constructor

crea un objeto sin mensaje asociado

Exception(String mensaje)    constructor

crea un objeto con un mensaje asociado

String getMessage()

devuelve el mensaje introducido en el constructor

Es muy habitual que las excepciones propias sean subclases de las Exception:

class MisErrores

public class MisErrores extends Exception {

    private Dato dato;

 

    public MisErrores() { super(); }

 

    public MisErrores(String msg) { super(msg); }

 

    public MisErrores(String msg, Dato dato) {

        super(msg);

        this.dato = dato;

    }

 

    public Dato getDato() { return dato; }

 

Temas relacionados

Vademécum
¿cuándo tener excepciones propias?
¿cuándo lanzar Error o subclases de ella?
¿cuándo lanzar Exception o subclases de ella?
¿cuándo lanzar RuntimeException o subclases de ella?