Native Ausnahmen in C#-Code abfangen
Bei der C#-Programmierung ist es möglich, Ausnahmen abzufangen, die aus nicht verwalteten Bibliotheken stammen, die oft als „nativ“ bezeichnet werden Ausnahmen.“ Diese Ausnahmen treten auf, wenn der zugrunde liegende native Code auf einen Fehler stößt, der nicht im verwalteten Code behandelt werden kann.
So fangen Sie native Ausnahmen ab
Um native Ausnahmen abzufangen, können Sie Folgendes tun Verwenden Sie die Win32Exception-Klasse. Diese Klasse stellt eine NativeErrorCode-Eigenschaft bereit, die den von der nicht verwalteten Bibliothek generierten Fehlercode enthält. Sie können diese Eigenschaft verwenden, um die Ausnahme entsprechend zu behandeln.
Beispielverwendung
Das folgende Beispiel zeigt, wie eine native Ausnahme abgefangen und mit der Win32Exception-Klasse behandelt wird:
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 { // Calls native application registered for the file type // This may throw a native exception 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 versucht die OpenFile()-Methode, eine Datei mit einer nativen Anwendung zu öffnen. Wenn die Datei nicht gefunden werden kann, der Zugriff verweigert wird oder dem Dateityp keine Anwendung zugeordnet ist, wird eine native Ausnahme ausgelöst. Der Catch-Block verwendet die Win32Exception-Klasse, um die Ausnahme abzufangen und angemessen zu behandeln, indem er ein Meldungsfeld mit den Fehlerdetails anzeigt.
Hinweis: Sie müssen keine besonderen Änderungen daran vornehmen try...catch-Block zum Abfangen nativer Ausnahmen. Der Standard-Try...Catch-Mechanismus reicht für die Behandlung sowohl verwalteter als auch nativer Ausnahmen aus.
Das obige ist der detaillierte Inhalt vonWie kann ich native Ausnahmen in C# abfangen und behandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!