Considerando il modo migliore per gestire le eccezioni, la risposta a questa domanda potrebbe essere quella di gestire l'eccezione in una posizione diversa o di non gestirla affatto ma di controllare il flusso del codice. Per favore fatemi sapere se questo è il caso.
Diciamo che abbiamo una classe NetworkConnection
. Questa classe ha un metodo Connect
che assomiglia a:
bool Connect(string ipAddress, int port)
{
try
{
// do connection, when successful
return true;
}
catch (HostNotFoundException ex)
{
return false;
}
catch (...)
{
...
}
}
Se un altro oggetto che usa questo metodo vuole sapere quale eccezione si è verificata, non può scoprirlo. Ci sono tre modi per affrontare questo che posso pensare:
- Restituisce un codice di errore
- Salva una variabile sull'oggetto
NetworkConnection
che contiene alcune informazioni di errore, forse una stringa che dice "Host non trovato", che può essere interrogata da un altro oggetto in seguito. - Cattura l'eccezione più in alto nella base del codice.
Voglio scegliere il secondo metodo, ma sento che sarebbe una cattiva idea. Qual è la decisione migliore qui, perché (potenzialmente) è il mio prescelto cattivo?