Estoy ejecutando un código a través de FxCop y actualmente estoy buscando eliminar todas las infracciones sin interrupción.Manejo de excepciones generales en C#
El código en sí tiene algunas instancias de bloques de prueba/captura que solo captan excepciones generales;
try
{
// Some code in here that could throw an exception
}
catch(Exception ex)
{
// Exception Thrown ... sort it out!
}
Ahora todos sabemos que esto es una mala práctica, pero pensé que sabía cómo hacerlo correctamente - pero FxCop tiene otras ideas!
Supongamos que el código en el bloque try podría arrojar una excepción IO, y solo una excepción IO. No debe haber nada malo en hacer esto:
try
{
// Code in here that can only throw an IOException
}
catch (System.IO.IOException ioExp)
{
// Handle the IO exception or throw it
}
catch (System.Exception ex)
{
// Catch otherwise unhandled exception
}
Pero FxCop no está de acuerdo conmigo ... Todavía banderas esto como una violación porque yo estoy poniendo System.Exception
.
¿Es realmente una mala práctica o debería/puedo ignorar esta violación?
Depende ... ¿qué estás haciendo en "// Capturar excepción no controlada"? – Heinzi
La aplicación es capaz de enviar correos electrónicos a nuestro servicio de ayuda, que pasan al desarrollo, por lo que probablemente activemos uno de ellos con el seguimiento de la pila. – DilbertDave
¿Está absolutamente seguro de que el bloque de código no puede arrojar una excepción OutOfMemoryException, por ejemplo, u otro error fatal ...? – SoftMemes