Die Ausnahmebehandlung in C ++ ist auf try / throw / catch beschränkt. Im Gegensatz zu Object Pascal, Java, C # und Python wurde das finally
Konstrukt auch in C ++ 11 nicht implementiert.
Ich habe sehr viel C ++ - Literatur gesehen, die sich mit "Exception Safe Code" befasst. Lippman schreibt, dass sicherer Code für Ausnahmen ein wichtiges, aber fortgeschrittenes, schwieriges Thema ist, das über den Rahmen seines Primers hinausgeht - was zu bedeuten scheint, dass sicherer Code für C ++ nicht grundlegend ist. Herb Sutter widmet dem Thema in seinem Exceptional C ++!
Dennoch scheint es mir, dass viele der Probleme, die beim Versuch aufgetreten sind, "ausnahmesicheren Code" zu schreiben, ziemlich gut gelöst werden könnten, wenn das finally
Konstrukt implementiert würde, so dass der Programmierer sicherstellen kann, dass das Programm selbst im Falle einer Ausnahme wiederhergestellt werden kann in einen sicheren, stabilen und leckagefreien Zustand, in der Nähe der Ressourcenzuweisung und des potenziell problematischen Codes. Als sehr erfahrener Delphi- und C # -Programmierer verwende ich try .. finally-Blöcke ziemlich ausführlich in meinem Code, wie es die meisten Programmierer in diesen Sprachen tun.
Angesichts all der in C ++ 11 implementierten "Schnickschnack" war ich erstaunt, dass "endlich" immer noch nicht da war.
Warum wurde das finally
Konstrukt nie in C ++ implementiert? Es ist wirklich kein sehr schwieriges oder fortgeschrittenes Konzept und trägt wesentlich dazu bei, dem Programmierer das Schreiben von "ausnahmesicherem Code" zu erleichtern.
finally
in C ++ kein und welche Techniken für die Ausnahmebehandlung werden an seiner Stelle verwendet?" ist gültig und thematisch für diese Seite. Die vorhandenen Antworten decken dies gut ab, denke ich. In eine Diskussion verwandeln über "Sind die Gründe der C ++ - Designer, nicht einzubeziehen, finally
lohnenswert?" und "Sollte finally
zu C ++ hinzugefügt werden?" und die Diskussion über Kommentare zu der Frage und jeder Antwort fortzusetzen, passt nicht zum Modell dieser Q & A-Site.