Я не уверен, что сделал бы это (хотя, учитывая JavaDoc, я не мог сказать вам, почему я колебался), но есть список исключенных исключений Throwable
, к которым вы можете добавить с помощью addSuppressed
. JavaDoc, похоже, не говорит, что это только для JVM для использования в try-with-resources:
Добавляет указанное исключение к исключениям, которые были подавлены для доставки этого исключения. Этот метод является поточно-ориентированным и обычно вызывается (автоматически и неявно) оператором try-with-resources.
Подавление поведения включено, если не отключено через конструктор. Когда подавление отключено, этот метод не делает ничего, кроме проверки своего аргумента.
Обратите внимание, что когда одно исключение вызывает другое исключение, первое исключение обычно перехватывается, а затем в ответ выдается второе исключение. Другими словами, существует причинно-следственная связь между двумя исключениями. Напротив, существуют ситуации, когда два независимых исключения могут быть сгенерированы в блоках кода одного уровня, в частности, в блоке try оператора try-with-resources и сгенерированном компилятором блоке finally, который закрывает ресурс. В этих ситуациях может распространяться только одно из сгенерированных исключений. В операторе try-with-resources, когда есть два таких исключения, исключение, происходящее из блока try, распространяется, и исключение из блока finally добавляется в список исключений, подавленных исключением из блока try. В качестве исключения разматывает стек,
Исключение могло подавлять исключения, но также вызываться другим исключением. Независимо от того, будет ли исключение иметь причину, семантически известно во время его создания, в отличие от того, будет ли исключение подавлять другие исключения, которые обычно определяются только после создания исключения.
Обратите внимание, что написанный программистом код также может воспользоваться вызовом этого метода в ситуациях, когда существует несколько исключений одного и того же уровня, и может распространяться только одно.
Обратите внимание на последний абзац, который, кажется, подходит для вашего случая.
AggregateException
список исключений. Эта идея должна быть применима и к Java.