He buscado, pero no he podido encontrar una respuesta definitiva para algunas de mis preguntas de excepción, especialmente con respecto a las mejores prácticas de C#.Errores de mezcla y excepciones en C#
Tal vez siempre esté confundido acerca de la mejor manera de usar excepciones, me encontré con este artículo que básicamente dice 'siempre use excepciones, nunca utilice códigos de error o propiedades' http://www.eggheadcafe.com/articles/20060612.asp. Definitivamente voy a comprar eso, pero aquí está mi dilema:
Tengo una función 'llamante' que llama 'callee'. 'callee' realiza algunas cosas diferentes, cada una de las cuales arroja el mismo tipo de excepción. ¿Cómo devuelvo información significativa a la 'persona que llama' sobre lo que estaba 'haciendo' en el momento de la excepción?
que podría lanzar una nueva excepción como la de abajo, pero me preocupa voy a estropear el StackTrace que es malo:
//try to log in and get SomeException
catch(SomeException ex)
{
throw new SomeException("Login failed", ex);
}
...
//try to send a file and get SomeException
catch(SomeException ex)
{
throw new SomeException("Sending file failed", ex):
}
Gracias, Mark
excepciones propagarse por la pila de llamadas de forma automática. No tienes que volver a lanzarlos. –
@CodyGray La razón para reiniciar es agregar información para que la persona que llama pueda diferenciar entre ellos. Si remito el try/catch del destinatario, la persona que llama no sabrá qué operación de múltiples operaciones causó la excepción. – MStodd
No entiendo por qué el destinatario no arrojaría una excepción con información sobre lo que estaba haciendo. ¡La persona que llama no debe saber lo que el destinatario está haciendo de todos modos! –