Heim >Backend-Entwicklung >C++ >Wie kann ich native Ausnahmen behandeln und auf spezifische Fehlerinformationen in C# zugreifen?
Behandeln nativer Ausnahmen in C#-Code
In C# ist es möglich, Ausnahmen abzufangen, die aus nicht verwalteten Bibliotheken stammen. Zur Behandlung solcher Ausnahmen reicht ein standardmäßiger Try-Catch-Block aus. Um jedoch auf bestimmte Fehlerinformationen aus der nativen Ausnahme zuzugreifen, können Sie die Win32Exception-Klasse verwenden.
Die Win32Exception-Klasse stellt eine NativeErrorCode-Eigenschaft bereit, die den mit der Ausnahme verknüpften nativen Fehlercode zurückgibt. Sie können diese Eigenschaft verwenden, um eine bestimmte Behandlung durchzuführen oder benutzerdefinierte Fehlermeldungen anzuzeigen.
Stellen Sie sich beispielsweise ein Szenario vor, in dem Sie versuchen, eine Datei mit einer nativen Anwendung zu öffnen. Der folgende Code zeigt, wie potenzielle Ausnahmen, einschließlich nativer Ausnahmen, behandelt werden:
const int ERROR_FILE_NOT_FOUND = 2; const int ERROR_ACCESS_DENIED = 5; const int ERROR_NO_APP_ASSOCIATED = 1155; void OpenFile(string filePath) { Process process = new Process(); try { process.StartInfo.FileName = filePath; process.StartInfo.Verb = "Open"; process.StartInfo.CreateNoWindow = true; process.Start(); } catch (Win32Exception e) { if (e.NativeErrorCode == ERROR_FILE_NOT_FOUND || e.NativeErrorCode == ERROR_ACCESS_DENIED || e.NativeErrorCode == ERROR_NO_APP_ASSOCIATED) { MessageBox.Show(this, e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } }
In diesem Beispiel fangen wir die Win32Exception ab und überprüfen die NativeErrorCode-Eigenschaft. Wenn der Fehlercode mit einem der angegebenen Werte übereinstimmt (z. B. Datei nicht gefunden, Zugriff verweigert usw.), zeigen wir eine benutzerdefinierte Fehlermeldung an.
Das obige ist der detaillierte Inhalt vonWie kann ich native Ausnahmen behandeln und auf spezifische Fehlerinformationen in C# zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!