Freigeben über


TRY--abschließendanweisung (C)

Microsoft-spezifisch

Die try-finally-Anweisung ist eine Microsoft-Erweiterung der Programmiersprache C, die Anwendungen ermöglicht, die Ausführung des Bereinigungscodes zu gewährleisten, wenn die Ausführung eines Codeblocks unterbrochen wird.Bereinigen besteht aus einem solchen Aufgaben, z. B. Arbeitsspeicher Schließen von Dateien und Freigeben von Freigeben von Dateihandles.Die try-finally-Anweisung ist besonders nützlich für Routinen, die einige Stellen haben, in denen eine Überprüfung einen Fehler durchgeführt wird, die vorzeitige Rückgabe von der Routine verursachen könnte.

  • try-finally Anweisung:
    __try Verbundanweisung

    __finally Verbundanweisung

Die Verbundanweisung nach der __try-Klausel ist der abgesicherte Abschnitt.Die Verbundanweisung nach der __finally Beendigungshandler der Klausel ist.Der Handler gibt einen Satz von Aktionen an, die ausgeführt werden, wenn der abgesicherte Abschnitt beendet wird, ob der abgesicherte Abschnitt durch eine Ausnahme (nicht ordnungsgemäße Beendigung) oder bis zum standardmäßigen fortfahren (normale Beendigung abgeschlossen ist.)

Steuerelements erreicht eine __try-Anweisung durch einfache sequenzielle Ausführung (Fortfahren).Wenn die __try-Anweisung wechselt, wird der zugehörige Handler aktiv.Die Ausführung wird fortgesetzt, wie folgt:

  1. Der abgesicherte Abschnitt wird ausgeführt.

  2. Der Beendigungshandler wird aufgerufen.

  3. Wenn der Beendigungshandler abgeschlossen wird, wird die Ausführung bei der Anweisung fortgesetzt __finally .Unabhängig davon, wie der abgesicherte Abschnitt endet (z. B. über eine goto-Anweisung im abgesicherten Text oder über eine return-Anweisung out), wird der Beendigungshandler ausgeführt, bevor der Ablaufsteuerung im abgesicherten Abschnitt heraus bewegt wird.

Das __leave-Schlüsselwort ist innerhalb eines Anweisungsblocks try-finally gültig.Die Auswirkung von __leave wurde, bis zum Ende des try-finally-Blocks zu wechseln.Der Beendigungshandler werden sofort ausgeführt.Obwohl eine goto-Anweisung verwendet werden kann, um das gleiche Ergebnis zu erreichen, verursacht eine Stapelentladung goto-Anweisung.Die __leave-Anweisung ist effizienter, da sie nicht Stapelentladung einschließt.

Eine try-finally-Anweisung mithilfe einer return-Anweisung oder der longjmp Beenden Laufzeitfunktion, wird als nicht ordnungsgemäße Beendigung.Es ist nicht zulässig, in __try eine Anweisung zu springen, sondern aus einer herauszuspringen gültig.Alle __finally-Anweisungen, die zwischen dem Anfangspunkt und dem Ziel aktiviert sind, ausgeführt werden müssen.Dies ist eine so genannte „lokale Entladung“.

Der Beendigungshandler wird nicht aufgerufen, wenn ein Prozess beim Ausführen einer try-finally-Anweisung abgebrochen wird.

HinweisHinweis

Strukturierte Ausnahmebehandlung arbeitet mit C- und C++-Quelldateien.Es ist jedoch nicht speziell für C++ entwickelt.Sie können sicherstellen, dass der Code portabler ist, indem Sie die C++-Ausnahmebehandlung verwenden.Die C++-Ausnahmebehandlung ist der Mechanismus behandelt und so viel flexibler, dass er beliebigen Typs Ausnahmen behandeln kann.

HinweisHinweis

Für C++-Programme sollte die C++-Ausnahmebehandlung anstelle der strukturierten Ausnahmebehandlung verwendet werden.Weitere Informationen finden Sie unter Ausnahmebehandlung in der C++-Sprachreferenz.

Weitere Informationen finden Sie im Beispiel für TRY-ausgenommen Anweisung , um zu sehen, wie die try-finally-Anweisung funktioniert.

Microsoft ENDES bestimmten

Siehe auch

Referenz

TRY--abschließendanweisung