Ich bin mir nicht sicher, ob ich es tun würde (obwohl ich Ihnen angesichts des JavaDoc nicht sagen konnte, warum ich zögere), aber es gibt eine Liste unterdrückter Ausnahmen Throwable
, die Sie über hinzufügen können addSuppressed
. Das JavaDoc scheint nicht zu sagen, dass dies nur für die JVM zum Ausprobieren von Ressourcen vorgesehen ist:
Hängt die angegebene Ausnahme an die Ausnahmen an, die unterdrückt wurden, um diese Ausnahme zu liefern. Diese Methode ist threadsicher und wird normalerweise (automatisch und implizit) von der Anweisung try-with-resources aufgerufen.
Das Unterdrückungsverhalten ist aktiviert, sofern es nicht über einen Konstruktor deaktiviert wird. Wenn die Unterdrückung deaktiviert ist, überprüft diese Methode nur das Argument.
Beachten Sie, dass, wenn eine Ausnahme eine andere Ausnahme verursacht, normalerweise die erste Ausnahme abgefangen wird und dann die zweite Ausnahme als Antwort ausgelöst wird. Mit anderen Worten, es besteht ein kausaler Zusammenhang zwischen den beiden Ausnahmen. Im Gegensatz dazu gibt es Situationen, in denen zwei unabhängige Ausnahmen in Geschwistercodeblöcken ausgelöst werden können, insbesondere im try-Block einer try-with-resources-Anweisung und im vom Compiler generierten finally-Block, der die Ressource schließt. In diesen Situationen kann nur eine der ausgelösten Ausnahmen weitergegeben werden. Wenn in der Anweisung try-with-resources zwei solcher Ausnahmen vorhanden sind, wird die vom try-Block stammende Ausnahme weitergegeben und die Ausnahme vom finally-Block zur Liste der Ausnahmen hinzugefügt, die durch die Ausnahme vom try-Block unterdrückt werden. In Ausnahmefällen wird der Stapel abgewickelt,
Eine Ausnahme hat möglicherweise Ausnahmen unterdrückt und wird gleichzeitig durch eine andere Ausnahme verursacht. Ob eine Ausnahme eine Ursache hat oder nicht, ist zum Zeitpunkt ihrer Erstellung semantisch bekannt, im Gegensatz dazu, ob eine Ausnahme andere Ausnahmen unterdrückt oder nicht, die normalerweise erst bestimmt werden, nachdem eine Ausnahme ausgelöst wurde.
Beachten Sie, dass vom Programmierer geschriebener Code diese Methode auch in Situationen aufrufen kann, in denen es mehrere Geschwisterausnahmen gibt und nur eine weitergegeben werden kann.
Beachten Sie den letzten Absatz, der Ihrem Fall zu entsprechen scheint.
AggregateException
eine Liste mit Ausnahmen. Diese Idee sollte auch auf Java anwendbar sein.