Nella domanda / risposta collegata a, la soluzione corretta consiste nel correggere il fatto che il codice di annullamento dell'iscrizione è chiamato più del codice di sottoscrizione. Se non c'è il tempo per risolverlo, ignorare quella specifica eccezione potrebbe essere una soluzione alternativa utile a breve termine. Ma sappiamo tutti cosa significa questo nel codice di produzione.
Nel caso generale, non esiste una risposta chiara "taglia unica". Esistono argomenti validi a favore e contro le eccezioni in generale, ma la verità è che alcuni linguaggi e librerie li usano così da poterli abituare a trattare efficacemente con loro.
A volte un'eccezione è relativamente innocua e dovrebbe innescare un comportamento diverso da un rethrow. Ad esempio, se l'input non è un numero valido (ad es. java.lang.NumberFormatException ) e non possono essere memorizzati in un campo numerico. Forse c'è un modo per indicarlo sull'interfaccia utente e riprovare l'operazione di input.
A volte un'eccezione è molto più seria (es. std :: bad_alloc ) e il tuo programma potrebbe voler prendilo, esegui una pulizia minima e ripeti il tiro per uccidersi. Nel caso di un std::bad_alloc
, sarebbe ovviamente una cattiva idea allocare più memoria durante la pulizia.
Ciò significa che devi veramente valutare ogni situazione. Pensa "cosa ha causato questa eccezione?" e "qual è il risultato realistico durante questo gestore di eccezioni?" Potrebbe significare qualcosa dalla convalida dell'input che cattura qualcosa di sbagliato, a qualcosa di così grave che non c'è modo di recuperare altro che scrivere una traccia di stack o un numero di riga nel log e uscire.