Beste Weg, um zu überprüfen, ob ein bestimmter exception-Typ war die Ursache (der Ursache, etc ...) in eine geschachtelte Ausnahme?

Schreibe ich einige JUnit-tests, die überprüfen, ob eine Ausnahme des Typs MyCustomException geworfen wird. Aber diese Ausnahme ist eingewickelt in anderen Ausnahmen, die eine Anzahl von Zeiten, z.B. in eine InvocationTargetException, die wiederum verpackt in eine RuntimeException.

Was ist der beste Weg, um zu bestimmen, ob MyCustomException irgendwie die Ausnahme verursacht hat, die ich eigentlich fangen? Ich möchte so etwas wie dies tun (siehe Unterstrichen):


try {
    doSomethingPotentiallyExceptional();
    fail("Expected an exception.");
} catch (RuntimeException e) {
     if (!e.wasCausedBy(MyCustomException.class)
        fail("Expected a different kind of exception.");
}

Ich würde gerne vermeiden, fordern getCause() ein paar "Ebenen" tief, und ähnlich hässlichen Workarounds. Gibt es einen schöneren Weg?

(Offenbar, der Frühling hat NestedRuntimeException.enthält(Klasse)die tut, was ich will - aber ich bin nicht mit Spring.)

GESCHLOSSEN:
OK, ich denke, es ist wirklich kein Weg um eine utility-Methode 🙂 vielen Dank an alle die geantwortet!

InformationsquelleAutor der Frage Yang Meyer | 2009-03-04

Schreibe einen Kommentar