Quais exceções não devo pegar?
Tenho um aplicativo que executa um longo processo em lote no qual muitas exceções podem ser lançadas. Se uma exceção não crítica for lançada durante um item do lote, desejo simplesmente registrá-la e continuar, para que possamos corrigir o problema mais tarde, deixando os outros itens do lote continuare
Algumas exceções, comoOutOfMemoryException
, são devastadores para o aplicativo como um todo, e eu gostaria de relançá-los para que eles atinjam o manipulador de exceção global que registrará o erro e interromperá o aplicativ
Então, minha pergunta é: existe uma lista razoavelmente curta de exceções críticas que eu posso repetir no meu manipulador de exceções mais baixas enquanto suprimo (após o registro) de todo o rest
Obrigado
Editar Para elaborar um pouco, aqui está a estrutura básica do meu programa
foreach(var item in longItemList)
{
try
{
bigDynamicDispatchMethod(item);
}
catch(Exception ex)
{
logException(ex);
}
}
Há potencialmente um grande número de exceções que podem ser lançadas porque esse loop está praticamente no nível superior do meu aplicativo. 99% do código no meu projeto está por trás do método de envio. Eu manuseio razoável de exceções em níveis mais baixos, mas os erros ainda funcionam e não quero interromper outros processos não relacionados no lote depois que uma exceção é lançad
entar descobrir quais exceções poderiam ser lançadas em qualquer outro lugar do meu aplicativo parece uma tarefa assustadora, e parecia que seria mais simples obter uma lista negra de exceções crítica
Existe uma maneira melhor de estruturar meu aplicativo para lidar com isso? Estou aberto a sugestões