La gestione delle eccezioni in C ++ è limitata a provare / lanciare / catturare. A differenza di Object Pascal, Java, C # e Python, anche in C ++ 11, il finally
costrutto non è stato implementato.
Ho visto un sacco di letteratura C ++ che parlava di "codice sicuro di eccezione". Lippman scrive che il codice sicuro di eccezione è un argomento importante ma avanzato e difficile, al di là dell'ambito del suo Primer, il che sembra implicare che il codice sicuro non sia fondamentale per C ++. Herb Sutter dedica 10 capitoli all'argomento nel suo eccezionale C ++!
Tuttavia, mi sembra che molti dei problemi riscontrati durante il tentativo di scrivere "codice sicuro di eccezione" potrebbero essere risolti abbastanza bene se il finally
costrutto fosse implementato, consentendo al programmatore di garantire che anche in caso di eccezione, il programma potesse essere ripristinato a uno stato sicuro, stabile, privo di perdite, vicino al punto di allocazione delle risorse e al codice potenzialmente problematico. Come programmatore Delphi e C # molto esperto, uso try .. finalmente si blocca abbastanza ampiamente nel mio codice, così come la maggior parte dei programmatori in queste lingue.
Considerando tutte le "campane e fischietti" implementate in C ++ 11, sono rimasto sorpreso di scoprire che "finalmente" non c'era ancora.
Quindi, perché il finally
costrutto non è mai stato implementato in C ++? Non è davvero un concetto molto difficile o avanzato da comprendere e aiuta molto il programmatore a scrivere "codice sicuro eccezioni".
finally
C ++ e quali tecniche di gestione delle eccezioni vengono utilizzate al suo posto?" è valido e in argomento per questo sito. Le risposte esistenti lo coprono bene, credo. Trasformandolo in una discussione su "I motivi dei progettisti del C ++ per non includerne la finally
pena?" e "Dovrebbe finally
essere aggiunto al C ++?" e portare avanti la discussione attraverso i commenti sulla domanda e ogni risposta non corrisponde al modello di questo sito di domande e risposte.