Strukturierte Ausnahmebehandlung (C++)
Windows 95, Windows 98 - und Windows 2000- (früher Windows NT) unterstützt ein robuster Ansatz zum Behandeln von Ausnahmen mit strukturierten Ausnahmebehandlung an, die die Zusammenarbeit des Betriebssystems einschließt, sondern auch direkte Unterstützung in der Programmiersprache.
Grammatik
TRY-ausgenommenAnweisung :
__tryVerbundanweisung
Verbundanweisung__except ( Ausdruck )
Hinweise
Eine Ausnahme ist ein Ereignis, das unerwartet ist oder die Fähigkeit des Prozesses stört, normalerweise fortzusetzen.Ausnahmen können von Hardware und Software erkannt werden.Hardware Ausnahmen zählen das Dividieren durch null und Überlauf eines numerischen Typs.Software-Ausnahmen umfassen die erkennen und signalisieren dem System, indem sie die RaiseException-Funktion und die speziellen Situationen erkannt von Windows aufgerufen wird.
Sie können mit strukturierter Ausnahmebehandlung zuverlässigeren Code schreiben.Sie können sicherstellen, dass Ressourcen, z. B. Speicherblöcke und Dateien, bei unerwarteten Beendigung ordnungsgemäß geschlossen werden.Sie können bestimmte Probleme, wie unzulänglicher Arbeitsspeicher mit kurzem strukturiertem Code auch behandeln, der nicht auf goto-Anweisungen oder durchdachten Tests von Rückgabecodes beruht.
Die TRY-ausgenommen und try-finally Aussagen eine Microsoft-Erweiterung der Programmiersprache C, die Anwendungen ermöglicht, Steuerelements abzurufen eines Programms nach Ereignissen, die normalerweise Ausführung beenden können.
Hinweis |
---|
Strukturierte Ausnahmebehandlung arbeitet mit C- und C++-Quelldateien.Es ist jedoch nicht speziell für C++ entwickelt.Obwohl Destruktoren für lokale Objekte bezeichnet werden, wenn Sie die strukturierte Ausnahmebehandlung in einem C++-Programm verwenden (wenn Sie /EHscverwenden), können Sie sicherstellen, dass der Code portabler ist, indem Sie die C++-Ausnahmebehandlung verwenden.Der C++-Ausnahme-behandeln Mechanismus ist, flexibler, dass er beliebigen Typs Ausnahmen behandeln kann. |
Es gibt zwei Mechanismen für die strukturierte Ausnahmebehandlung:
Ausnahmehandler, die auf reagieren kann oder die Ausnahme zurückweist
Beendigungshandler, die aufgerufen werden, wenn eine Ausnahme in einem Codeblock Beendigung verursacht
Diese beiden Typen von Handlern unterschiedlich sind, jedoch werden sie durch einen Prozess, der im Hinblick eng dem Namen „Entladen des Stapels.“ Wenn eine Ausnahme auftritt, sucht Fenster den zuletzt installierte Ausnahmehandler, der gerade aktiv ist.Der Handler kann einer von drei Schritte ausführen:
Übergeben von Handlern zu einem anderen Steuerelement (Fail, um die Ausnahme zu erkennen.)
Erkennen und weisen Sie die Ausnahme zurück.
Erkennen und behandeln die Ausnahme.
Der Ausnahmehandler, der die Ausnahme entdeckt, ist möglicherweise nicht in der Funktion, die ausgeführt wird, wenn die Ausnahme aufgetreten ist.In einigen Fällen ist es möglicherweise in einer Funktion wesentlich höher auf dem Stapel.Die gegenwärtig ausgeführte Funktion sowie alle Funktionen im Stapelrahmen, werden beendet.Während dieses Vorgangs „entlädt sich“ der Stapel: Lokale Variablen von Funktionen beendet wurde, es sei denn, sie staticsind, werden vom Stapel geholt gelöscht.
Da er den Stapel entlädt, ruft das Betriebssystem alle Beendigungshandler angezeigt, die Sie für jede Funktion geschrieben haben.Verwendung eines Beendigungshandlers gibt Ihnen die Möglichkeit, Ressourcen zu bereinigen, weil sonst nicht ordnungsgemäße Beendigung geöffnet bleiben.Wenn Sie einen kritischen Abschnitt eingegeben haben, können Sie den Beendigungshandler beenden.Wenn das Programm beenden wird, können Sie weitere Konfigurationsaufgaben Haushaltungs z. B. Schließen und Entfernen von temporären Dateien ausführen.
Wenn Sie C-Module verfügen, die die strukturierte Ausnahmebehandlung verwenden, können sie mit C++-Modulen kombiniert werden, die die C++-Ausnahmebehandlung verwenden.Weitere Informationen finden Sie unter Ausnahmebehandlungs-Unterschiede.
Weitere Informationen finden Sie unter: