Freigeben über


Ausnahmebehandlung (Fehlerbehandlung)

Ausnahmen können durch Hardware oder Software initiiert werden und können sowohl im Kernelmodus als auch im Benutzermoduscode auftreten. Die strukturierte Ausnahmebehandlung bietet einen einzigen Mechanismus für die Behandlung von Kernelmodus- und Benutzermodusausnahmen.

Die Ausführung bestimmter Befehlssequenzen kann zu Ausnahmen führen, die von Hardware initiiert werden. Beispielsweise wird von der Hardware eine Zugriffsverletzung generiert, wenn ein Prozess versucht, aus einer virtuellen Adresse zu lesen oder in diese zu schreiben, auf die er nicht über den entsprechenden Zugriff verfügt.

Ereignisse, die eine Ausnahmebehandlung erfordern, können auch während der Ausführung einer Softwareroutine auftreten (z. B. wenn ein ungültiger Parameterwert angegeben wird). In diesem Fall kann ein Thread explizit eine Ausnahme initiieren, indem die RaiseException-Funktion aufgerufen wird. Mit dieser Funktion kann der aufrufende Thread Informationen angeben, die die Ausnahme beschreiben.

Eine Ausnahme kann fortlaufend oder nicht fortlaufend sein. Eine nicht zusammenhängende Ausnahme entsteht, wenn das Ereignis auf der Hardware nicht fortlaufend werden kann oder wenn die Fortsetzung keinen Sinn ergibt. Eine nicht zusammenhängende Ausnahme beendet die Anwendung nicht. Daher kann eine Anwendung die Ausnahme möglicherweise abfangen und ausführen. Eine nicht zusammenhängende Ausnahme entsteht jedoch in der Regel als Folge eines beschädigten Stapels oder eines anderen schwerwiegenden Problems, was die Wiederherstellung von der Ausnahme erschwert.