## La Sentencia throw

Todos los métodos Java utilizan la sentencia throw para lanzar una excepción. Esta sentencia requiere un sólo argumento, un objeto Throwable. En el sistema Java, los objetos lanzables son ejemplares de la clase Throwable definida en el paquete java.lang. Aquí tienes un ejemplo de la sentencia throw:

    throw algunObjetoThrowable;

Si se intenta lanzar un objeto que no es 'lanzable', el compilador rehusa la compilación del programa y muestra un mensaje de error similar a éste:

    testing.java:10: Cannot throw class java.lang.Integer; it must be a subclass
    of class java.lang.Throwable.
                throw new Integer(4);
                ^

La página siguiente, La clase Throwable y sus Subclases, cuentan más cosas sobre la clase Throwable.

Echemos un vistazo a la sentencia throw en su contexto. El siguiente método está tomado de una clase que implementa un objeto pila normal. El método pop() saca el elemento superior de la pila y lo devuelve:

    public Object pop() throws EmptyStackException {
        Object obj;

        if (size == 0)
            throw new EmptyStackException();

        obj = objectAt(size - 1);
        setObjectAt(size - 1, null);
        size--;
        return obj;
    }

El método pop() comprueba si hay algún elemento en la pila. Si la pila está vacía (su tamaño es igual a cero), ejemplariza un nuevo objeto de la clase EmptyStackException y lo lanza. Esta clase está definida en el paquete java.util. En páginas posteriores podrás ver cómo crear tus propias clases de excepciones. Por ahora, todo lo que necesitas recordar es que se pueden lanzar objetos heredados desde la clase Throwable.

### La clausula throws

> Habrás observado que la declaración del método pop() contiene esta clausula:

>     throws EmptyStackException

> La clausual throws especifica que el método puede lanzar una excepción EmptyStackException. Como ya sabes, el lenguaje Java requiere que los métodos capturen o especifiquen todas las excepciones chequeadas que puedan ser lanzadas dentro de su ámbito. Se puede hacer esto con la clausula throws de la declaración del método. Para más información sobre estos requerimientos puedes ver Requerimientos Java para Capturar o Especificar.

> También puedes ver, Especificar las Excepciones lanzadas por un Método para obtener más detalles sobre cómo un método puede lanzar excepciones.

Ozito