Tengo una aplicación que ejecuta un proceso por lotes largo donde podrían lanzarse muchas excepciones. Si se lanza una excepción no crítica durante un artículo en el lote, simplemente quiero iniciar sesión y continuar, para poder solucionar el problema más tarde y dejar que los otros elementos del lote continúen.¿Qué excepciones no debería detectar?
Algunas excepciones, como OutOfMemoryException
, son devastadoras para la aplicación como un todo, y estas me gustaría volver a lanzarlas para que se conviertan en manejador de excepción global que registrará el error y detendrá la aplicación.
Así que mi pregunta es, ¿hay una lista razonablemente breve de excepciones críticas que puedo volver a lanzar en mi controlador de excepciones más bajo mientras suprimo (después de iniciar sesión) todo lo demás?
Gracias!
Editar: Elaborar un poco, aquí es la estructura básica de mi programa
foreach(var item in longItemList)
{
try
{
bigDynamicDispatchMethod(item);
}
catch(Exception ex)
{
logException(ex);
}
}
hay potencialmente un gran número de excepciones que puedan ser lanzados porque este circuito es más o menos en el nivel superior de mi aplicación. El 99% del código en mi proyecto está detrás del método de envío. Hago un manejo de excepciones razonable en niveles más bajos, pero los errores aún se abren paso y no quiero detener otros procesos no relacionados en el lote después de que se lanza una excepción.
Tratando de encontrar qué excepciones podrían arrojarse en cualquier otro lugar en mi aplicación parece una tarea desalentadora, y parecía ser que sería más simple obtener una lista negra de excepciones críticas.
¿Existe alguna forma mejor de estructurar mi aplicación para hacer frente a esto? Estoy abierto a sugerencias.
posible duplicado de [¿Qué tipos de excepción no para coger?] (http://stackoverflow.com/questions/5507836/which-types- of-exception-not-to-catch) –