salida - todas las excepciones en java




Volver a generar excepciones en Java sin perder el seguimiento de pila (6)

El seguimiento de la pila se conserva si envuelve la extracción capturada en otra excepción (para proporcionar más información) o si simplemente vuelve a lanzar la extracción capturada.

try{ ... }catch (FooException e){ throw new BarException("Some usefull info", e); }

En C #, puedo usar el throw; declaración para volver a emitir una excepción a la vez que se conserva el seguimiento de la pila:

try
{
   ...
}
catch (Exception e)
{
   if (e is FooException)
     throw;
}

¿Hay algo como esto en Java ( que no pierde el rastro de pila original )?


En Java es casi lo mismo:

try
{
   ...
}
catch (Exception e)
{
   if (e instanceof FooException)
     throw e;
}

También puede envolver la excepción en otra Y mantener el seguimiento de la pila original pasando la Excepción como un Throwable como el parámetro de causa:

try
{
   ...
}
catch (Exception e)
{
     throw new YourOwnException(e);
}

Yo preferiría:

try
{
   ...
}
catch (FooException fe){
   throw fe;
}
catch (Exception e)
{
   ...
}

catch (WhateverException e) {
    throw e;
}

simplemente volverá a generar la excepción que haya capturado (obviamente, el método circundante tiene que permitirlo a través de su firma, etc.). La excepción mantendrá la traza de pila original.


public int read(byte[] a) throws IOException {
    try {
        return in.read(a);
    } catch (final Throwable t) {
        /* can do something here, like  in=null;  */
        throw t;
    }
}

Este es un ejemplo concreto en el que el método lanza una IOException . Los medios final t solo pueden contener una excepción lanzada desde el bloque try. Material de lectura adicional se puede encontrar here y here .





exception