Lanzamiento de excepciones

La sentencia throw levanta una excepción. Cuando se encuentra una excepción la parte del programa que detecta la excepción puede comunicar que la excepción ha ocurrido por levantamiento, o lanzamiento de una excepción. 

El formato de throw es:

       throw objeto

El operando de throw ha de ser un objeto de una clase derivada de la clase Exception. Una excepción lanzada hace que termine el bloque try, las sentencias que siguen no se ejecutan. El objeto que se lanza puede contener información relativa al problema que ha surgido.

El manejador catch que captura una excepción realiza un proceso con ella y puede decidir devolver control, return, o continuar la ejecución en el mismo método, a continuación del último catch. Incluso, la excepción actual se puede relanzar con la misma sentencia: throw objeto. Normalmente se utiliza cuando se desea que un segundo manejador sea llamado desde el primero para procesar después la excepción. (Ver Diseño de excepciones)

Ejemplo

Se supone tres métodos, el método main() tiene un bloque try en el que se llama a deolit(); este método tiene su bloque try en el que se llama a lopart(). Este último lanza una excepción que es atrapada por el try-catch correspondiente a deolit(), que a su vez relanza la excepción.

        void lopart() throws NuevaExcepcion{
                   //
                   throw new NuevaExcepcion();
        }
        void deolit() throws NuevaExcepcion{
                   int i;
                   try{
                                i = -16;
                                lopart();
                   }
                   catch(NuevaExcepcion n){
                                System.out.println(«Excepción captada, se relanza»);
                   }
        }
        public static void main(String[] args){
                   try{
                                deolit();
                   }
                   catch(NuevaExcepcion er){
                                System.out.println(«Excepción capturada en main()»);
                   }
        }