//
// To Throw
void PrintType(object obj)
{
if(obj == null)
{
throw new ArgumentNullException("obj")
}
Console.WriteLine(obj.GetType().Name);
}
//
// Not to Throw
void PrintType(object obj)
{
if(obj != null)
{
Console.WriteLine(obj.GetType().Name);
}
}
¿Qué principio mantener?Para tirar o no tirar
personalmente prefiero la primera uno su ejemplo amistoso con el desarrollador (notificado sobre cada una "anomalía"). El segundo es decir fácil de usar (deje que el usuario continúe trabajando incluso si "dentro" no todo funciona bien).
Creo que es más complicado encontrar errores y errores en la fase de mantenimiento cuando silenciosamente dejas que las cosas continúen. Si algo sale mal, no se le notificará de inmediato, y algunas veces tendrá errores muy alejados de la causa principal del error, y se perderá mucho tiempo para encontrarlo.
¿Qué opinas?
¿Cómo silenciosamente falla informar un error "fácil de usar"? ¿Qué más está mal que está siendo enmascarado por este enfoque "fácil de usar"? –
@ S.Lott: con "fácil de usar" me refiero a que el usuario primero no verá extraños (para ello) mensajes de excepción, y en segundo lugar permitirá continuar haciendo una acción (incluso incompleta), en lugar de una falla de aplicación o algo similar si las excepciones no se manejan adecuadamente. – serhio
Las excepciones deben ser * excepcionales *. ¿Esto justifica una excepción? No puedo decir, sin saber más acerca de su situación. – Thomi