En PC Resumen vamos a explicar el funcionamiento de la sentencia "throw" dentro del lenguaje de programación en Java. Hasta ahora, sólo hemos capturado excepciones lanzadas por el intérprete Java. Con la sentencia throw, el programa también puede lanzar una excepción de forma explícita. Esta es la forma general de throw:

throw instancia_ejecutable

instancia_ejecutable debe ser del tipo Throwable o una subclase de esta. No pueden utilizarse como excepciones los tipos simples como int, char ni las clases String o Object. Existen dos formas de obtener un objeto Throwable, utilizando un valor de la cláusula catch o creando una con el operador new.

La ejecución es detiene inmediatamente después de la sentencia throw, y no se ejecutará ninguna de las sentencias siguientes. A continuación, se examina el bloque try más cercano que le rodea, para ver si contiene una sentencia catch que coincida con el tipo de excepción. Si es así, el control se transfiere a esta sentencia, de lo contrario, se examina la siguiente sentencia try y así sucesivamente.

Ahora veremos un ejemplo que crea y lanza una excepción. El gestor que captura la excepción vuelve a lanzarla al gestor más externo:

class ThrowDemo {
    static void demoproc() {
        try {
            throw new NullPointerException("demo");
        } Catch(NullPointerException e) {
            System.out.println ("Capturada dentro demoproc.");
            throw y; // Volvemos a tirar la excepción.
        }
    }

    public static void main(String args[]) {
        try {
            demoproc();
        } Catch(NullPointerException e) {
            System.out.println("recapturado: " + e);
        }
    }
}

La salida del programa será la siguiente:

Capturada dentro demoproc.
Recapturada: java.lang.NullPointerException: demo

En este programa también se puede ver cómo se crea uno de los objetos de la clase Exception. Fijémonos en este línea:

throw new NullPointerException("demo");

Aquí, estamos utilizando new para construir una instancia de NullPointerException. Muchas de las excepciones incorporadas para Java en el momento de la ejecución tienen dos constructores: un sin parámetros y otra con un parámetro de tipo String. Cuando se utiliza la segunda forma, el argumento especifica una cadena que describe la excepción, esta cadena se imprime cuando se utiliza el objeto como argumento de print o println. También se puede obtener mediante una llamada al método getMessage(), que está definido en Throwable.

Las excepciones pueden lanzarse desde un constructor. Cuando se detecta un error en un constructor, se debe tirar una excepción en vez de crear un objeto de forma inapropiada.

Pin It