Heim >Backend-Entwicklung >C++ >Warum fehlen unbehandelte Ausnahmen in meiner 64-Bit-VS2010-WinForms-Anwendung?
Debuggen einer neuen 64-Bit-Windows-Winform-Anwendung in Visual Studio 2010? Möglicherweise sind nicht behandelte Ausnahmen nicht den Debugger ausgelöst. Dies liegt an der WOW64-Emulationsschicht, die Ausnahmen in Code abfängt, die auf 64-Bit-Fenstermanager-Benachrichtigungen reagieren (wie das Form1_Load
Ereignis).
Ursache und Auswirkung
Das Problem stammt aus der Unfähigkeit von Windows, Ausnahmen korrekt zu verarbeiten, die sich von 32-Bit (Ihrer App) bis 64-Bit-Code (der Benachrichtigungsquelle) bewegen. Dies erschwert das Debuggen, da die Ausnahme für den Debugger unsichtbar ist.
Lösungen
Hier gibt es verschiedene Möglichkeiten, dies anzusprechen:
Load
Ereignis in try/catch
: Einschließen Sie Ihren Load
Ereignishandlercode in einen try/catch
-Block. Verwenden Sie Environment.FailFast()
im block catch
für einen kontrollierten Absturz mit einem detaillierten Bericht. UnhandledExceptionMode
: In Ihrer Main()
-Methode rufen Sie Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException)
auf, um zu verhindern, dass die Nachrichtenschleife die Ausnahme während des Debuggens unterdrückt. Load
Überlegen Sie, ob der Ereignishandler wirklich seinen gesamten Code benötigt. Das Verschieben einiger Aktionen in den Konstruktor könnte helfen. Load
Das obige ist der detaillierte Inhalt vonWarum fehlen unbehandelte Ausnahmen in meiner 64-Bit-VS2010-WinForms-Anwendung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!