Ho cercato, ma non sono riuscito a trovare una risposta definitiva per alcune delle mie domande sulle eccezioni, in particolare per quanto riguarda le best practice C#.Errori di mixaggio ed eccezioni in C#
Forse sarò sempre confuso sul modo migliore per utilizzare le eccezioni, ho trovato questo articolo che dice in pratica 'usa sempre le eccezioni, non usare mai codici di errore o proprietà' http://www.eggheadcafe.com/articles/20060612.asp. Lo comprerò sicuramente, ma ecco il mio dilemma:
Ho una funzione 'chiamante' che chiama 'callee'. 'callee' esegue alcune cose diverse, ognuna delle quali potrebbe generare lo stesso tipo di eccezione. Come faccio a ritrasmettere informazioni significative a 'chiamante' su cosa stava facendo 'callee' al momento dell'eccezione?
ho potuto lanciare una nuova eccezione come qui di seguito, ma io sono preoccupato io rovinare lo stacktrace che è male:
//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):
}
Grazie, Mark
Le eccezioni riempiono automaticamente lo stack di chiamate. Non devi ricrearli. –
@CodyGray Il motivo del rilancio è di aggiungere informazioni in modo che il chiamante possa distinguerle. Se remoto il try/catch dal callee, il chiamante non saprà quale operazione di più operazioni ha causato l'eccezione. – MStodd
Non capisco perché il destinatario non abbia lanciato un'eccezione contenente informazioni su ciò che stava facendo. Il chiamante non dovrebbe sapere cosa sta facendo il callee comunque! –