Tôi đã viết một lớp tải các đối tượng cấu hình của ứng dụng và theo dõi chúng để tôi có thể dễ dàng ghi lại các thay đổi hoặc tải lại toàn bộ cấu hình cùng một lúc bằng một cuộc gọi phương thức duy nhất. Tuy nhiên, mỗi đối tượng cấu hình có thể có khả năng ném một ngoại lệ khi thực hiện IO, nhưng tôi không muốn những lỗi đó hủy bỏ toàn bộ quá trình để cung cấp cho các đối tượng khác vẫn có cơ hội tải lại/ghi. Vì vậy, tôi thu thập tất cả các ngoại lệ được ném trong khi lặp qua các đối tượng và lưu trữ chúng trong một siêu ngoại lệ, được ném sau vòng lặp, vì mỗi ngoại lệ vẫn phải được xử lý và ai đó phải được thông báo về những gì chính xác. Tuy nhiên, cách tiếp cận đó có vẻ hơi lạ với tôi. Có ai đó ở đó với một giải pháp sạch hơn?Xử lý nhiều ngoại lệ
Dưới đây là một số mã của lớp nêu:
public synchronized void store() throws MultipleCauseException
{
MultipleCauseException me = new MultipleCauseException("unable to store some resources");
for(Resource resource : this.resources.values())
{
try
{
resource.store();
}
catch(StoreException e)
{
me.addCause(e);
}
}
if(me.hasCauses())
throw me;
}
Cân nhắc tải lại, các đối tượng ném một ngoại lệ sau đó thể hiện trạng thái nhất quán có thể có mới nhất (tức là giữ bản sao cũ của cấu hình). –