Tôi không chắc chắn tôi đã làm điều đó (mặc dù được cung cấp JavaDoc tôi không thể cho bạn biết lý do tại sao tôi ngần ngại), nhưng có một danh sách các trường hợp ngoại lệ bị loại bỏ Throwable
mà bạn có thể thêm vào thông qua addSuppressed
. JavaDoc dường như không nói rằng điều này chỉ dành cho JVM để sử dụng trong tài nguyên dùng thử:
Áp dụng ngoại lệ được chỉ định cho các ngoại lệ đã bị loại bỏ để cung cấp ngoại lệ này. Phương thức này an toàn cho luồng và thường được gọi (tự động và ngầm) bởi câu lệnh try-with-resource.
Hành vi triệt tiêu được kích hoạt trừ khi bị vô hiệu hóa thông qua một hàm tạo. Khi triệt tiêu bị vô hiệu hóa, phương thức này không làm gì khác hơn là xác nhận đối số của nó.
Lưu ý rằng khi một ngoại lệ gây ra ngoại lệ khác, ngoại lệ đầu tiên thường được bắt và sau đó ngoại lệ thứ hai được đưa ra để đáp lại. Nói cách khác, có một mối liên hệ nhân quả giữa hai ngoại lệ. Ngược lại, có những tình huống hai trường hợp ngoại lệ độc lập có thể được ném vào các khối mã anh chị em, đặc biệt là trong khối thử của câu lệnh try-with-resource và khối cuối cùng do trình biên dịch tạo ra sẽ đóng tài nguyên. Trong những tình huống này, chỉ một trong những ngoại lệ được ném có thể được truyền bá. Trong câu lệnh try-with-resource, khi có hai ngoại lệ như vậy, ngoại lệ bắt nguồn từ khối thử được lan truyền và ngoại lệ từ khối cuối cùng được thêm vào danh sách các ngoại lệ bị loại trừ bởi ngoại lệ từ khối thử. Như một ngoại lệ làm thư giãn ngăn xếp,
Một ngoại lệ có thể đã loại bỏ các ngoại lệ trong khi cũng được gây ra bởi một ngoại lệ khác. Có hay không một ngoại lệ có nguyên nhân được biết đến về mặt ngữ nghĩa tại thời điểm tạo ra nó, không giống như liệu một ngoại lệ có ngăn chặn các ngoại lệ khác thường chỉ được xác định sau khi ném ngoại lệ hay không.
Lưu ý rằng mã viết của lập trình viên cũng có thể tận dụng việc gọi phương thức này trong các tình huống có nhiều ngoại lệ anh chị em và chỉ có thể truyền bá một.
Lưu ý rằng đoạn cuối, có vẻ phù hợp với trường hợp của bạn.
AggregateException
một danh sách các trường hợp ngoại lệ. Ý tưởng đó cũng nên được áp dụng cho Java.