Freigeben über


Bearbeitung von Beendigungen

Ein Beendigungshandler stellt sicher, dass ein bestimmter Codeblock ausgeführt wird, wenn der Steuerungsfluss einen bestimmten geschützten Codetext verlässt. Ein Terminierungshandler besteht aus den folgenden Elementen.

  • Ein geschützter Codetext
  • Ein Block des Beendigungscodes, der ausgeführt werden soll, wenn der Ablauf der Steuerung den geschützten Text verlässt

Terminierungshandler werden in sprachspezifischer Syntax deklariert. Mithilfe des Microsoft C/C++-Optimierungscompilers werden sie mithilfe von __try und __finally implementiert. Weitere Informationen finden Sie unter Handlersyntax.

Der geschützte Codetext kann ein Codeblock, eine Reihe geschachtelter Blöcke oder eine gesamte Prozedur oder Funktion sein. Wenn der bewachte Text ausgeführt wird, wird der Block des Beendigungscodes ausgeführt. Die einzige Ausnahme ist, wenn der Thread während der Ausführung des geschützten Texts beendet wird (z. B. wenn die ExitThread - oder ExitProcess-Funktion innerhalb des geschützten Textkörpers aufgerufen wird).

Der Beendigungsblock wird ausgeführt, wenn der Kontrollfluss den bewachten Körper verlässt, unabhängig davon, ob der bewachte Körper normal oder ungewöhnlich beendet wurde. Der bewachte Text wird als normal beendet betrachtet, wenn die letzte Anweisung im Block ausgeführt wird und die Steuerung sequenziell in den Beendigungsblock übergeht. Eine abnormale Beendigung tritt auf, wenn der Ablauf der Steuerung den bewachten Text aufgrund einer Ausnahme oder aufgrund einer Steuerungsanweisung wie "Return", "Goto", "Break" oder "Continue" verlässt. Die AbnormalTermination-Funktion kann innerhalb des Beendigungsblocks aufgerufen werden, um zu bestimmen, ob der bewachte Text normal beendet wird.