Le eccezioni rendono davvero facile scrivere codice in cui un'eccezione generata interromperà le invarianti e lascerà gli oggetti in uno stato incoerente. Essenzialmente ti costringono a ricordare che quasi ogni affermazione che fai può potenzialmente lanciare e gestirla correttamente. Farlo può essere complicato e controintuitivo.
Perché le eccezioni sono un C++ errato?
Il motivo principale per cui le eccezioni C++ sono così spesso vietate è che è molto difficile scrivere codice C++ sicuro per le eccezioni. La sicurezza delle eccezioni non è un termine che si sente molto spesso, ma in pratica significa codice che non si rovina troppo gravemente se lo stack viene svolto.
L'eccezione è un male?
Dovresti usare almeno eccetto Exception : per evitare di intercettare il sistema eccezioni come SystemExit o KeyboardInterrupt. Ecco il link ai documenti. In generale dovresti definire esplicitamente eccezioni che vuoi intercettare, per evitare di catturare eccezioni indesiderate. Dovresti sapere quali eccezioni ignori.
Perché la cattura dell'eccezione è quasi sempre una cattiva idea?
catch(Exception) è una cattiva pratica perché cattura anche tutte le RuntimeException (eccezione non controllata). Questo potrebbe essere specifico di java: a volte sarà necessario chiamare metodi che generano eccezioni verificate. Se questo è nel tuo livello EJB / business logic hai 2 scelte: catturali o rilanciali.
Le eccezioni sono dannose per le prestazioni?
Conclusione. Non utilizzandoeccezioni a causa del loro potenziale impatto sulle prestazioni è una cattiva idea. Le eccezioni aiutano a fornire un modo uniforme per far fronte ai problemi di runtime e aiutano a scrivere codice pulito. È tuttavia necessario tracciare il numero di eccezioni generate nel codice.