The javadoc example¿Cómo uso Throwables.propagateIfInstanceOf() de Google Guava?
try {
someMethodThatCouldThrowAnything();
} catch (IKnowWhatToDoWithThisException e) {
handle(e);
} catch (Throwable t) {
Throwables.propagateIfInstanceOf(t, IOException.class);
Throwables.propagateIfInstanceOf(t, SQLException.class);
throw Throwables.propagate(t);
}
no es muy concreto. ¿Cómo se vería un programa real? Realmente no entiendo el propósito de los métodos Throwables.propagateIfInstanceOf(Throwable, Class)
, propagate()
, propagateIfPossible()
. ¿Cuándo los uso?
La segunda versión del método que escribió no es equivalente ... que había necesidad de añadir dos más 'bloques catch' que acaba de volver a lanzar la excepción ... uno para' RuntimeException' y otro para ' Error'. 'Throwables.propagate' solo envuelve lo que se puede arrojar en' RuntimeException' si aún no es una excepción no seleccionada. – ColinD
Todavía no lo entiendo. ¿Por qué quiero capturar una excepción si quiero propagarlo de todos modos? Puedo hacer: public void doSomething() arroja IOException, SQLException {try {someMethodThatCouldThrowAnything(); } catch (IKnowWhatToDoWithThisException e) {handle (e); }}. Este no es un ejemplo real ... –
@Jeny: No se puede hacer así, 'someMethodThatCouldThrowAnything()' puede arrojar algunas excepciones marcadas que no sean 'IOException' y' SQLException'. – axtavt