Я написал класс, который загружает объекты конфигурации моего приложения и отслеживает их, чтобы я мог легко записывать изменения или перезагружать всю конфигурацию сразу одним вызовом метода. Тем не менее, каждый объект конфигурации может потенциально генерировать исключение при выполнении ввода-вывода, но я не хочу, чтобы эти ошибки отменяли общий процесс, чтобы дать другим объектам возможность перезагрузки/записи. Поэтому я собираю все исключения, которые бросаются при повторении объектов и хранят их в супер-исключении, которое бросается после цикла, поскольку каждое исключение все равно нужно обрабатывать, и кто-то должен быть уведомлен о том, что именно пошло не так. Однако этот подход выглядит немного странным для меня. Кто-то там с более чистым решением?Обработка нескольких исключений
Вот код из указанного класса:
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;
}
Учитывая перезагрузку, объекты, которые генерируют исключение, представляют собой последнее возможное согласованное состояние (т. Е. Сохраняют устаревшую копию конфигурации). –