У меня есть приложение, которое запускает длинный пакетный процесс, где потенциально может быть вызвано множество исключений. Если во время одного элемента в пакете возникает некритическое исключение, я хочу просто зарегистрировать его и продолжить, поэтому мы можем исправить эту проблему позже, разрешив другим элементам партии.
Некоторые исключения, такие как OutOfMemoryException
, являются разрушительными для приложения в целом, и это я хотел бы восстановить, чтобы они перешли на глобальный обработчик исключений, который будет регистрировать ошибку и останавливать приложение.
Итак, мой вопрос заключается в том, есть ли разумный краткий список критических исключений, который я могу изменить в моем более низком обработчике исключений при подавлении (после регистрации) всего остального?
Спасибо!
Изменить: Чтобы немного разобраться, вот основная структура моей программы
foreach(var item in longItemList)
{
try
{
bigDynamicDispatchMethod(item);
}
catch(Exception ex)
{
logException(ex);
}
}
Существует потенциально огромное количество исключений, которые можно было бы выбросить, потому что этот цикл в значительной степени находится на верхнем уровне моего приложения. 99% кода в моем проекте находится за методом отправки. Я делаю разумную обработку исключений на более низких уровнях, но ошибки все еще работают, и я не хочу останавливать другие несвязанные процессы в пакете после того, как выбрано исключение.
Попытка найти, какие исключения могут быть выбрасываться повсюду в моем приложении, кажется сложной задачей, и казалось, что было бы проще получить черный список критических исключений.
Есть ли лучший способ структурировать мое приложение, чтобы справиться с этим? Я открыт для предложений.