La gestione delle eccezioni in C ++ è limitata a try / throw / catch. A differenza di Object Pascal, Java, C # e Python, anche in C ++ 11, il costrutto finally
non è stato implementato.
Ho visto un sacco di pubblicazioni in C ++ che parlano di "codice di sicurezza eccezionale". Lippman scrive che il codice eccezionalmente sicuro è un argomento importante ma avanzato, oltre lo scopo 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 incontrati durante il tentativo di scrivere "codice eccezionalmente protetto" potrebbero essere risolti abbastanza se il costrutto finally
è stato implementato, consentendo al programmatore di garantire che anche in caso di un'eccezione , il programma può essere ripristinato in uno stato sicuro, stabile, privo di perdite, vicino al punto di allocazione delle risorse e codice potenzialmente problematico. Come programmatore Delphi e C # molto esperto, io uso try .. finalmente blocca abbastanza estesamente nel mio codice, come fanno la maggior parte dei programmatori in queste lingue.
Considerando tutti i "campanelli e fischietti" implementati in C ++ 11, sono rimasto stupito nello scoprire che "finalmente" non era ancora lì.
Quindi, perché il costrutto finally
non è mai stato implementato in C ++? Non è davvero un concetto molto difficile o avanzato da cogliere e serve molto per aiutare il programmatore a scrivere "codice di sicurezza".