Maison >développement back-end >C++ >Le C# standard peut-il essayer...catch Blocks de gérer les exceptions natives des bibliothèques non gérées ?
L'évasion d'exceptions natives peut-elle se produire en C# ?
Lorsque vous travaillez avec des bibliothèques externes non gérées en C#, il est essentiel d'envisager la possibilité de faire face à exceptions natives provenant du plus profond de ces bibliothèques.
Peut-on essayer en standard...Catch Capture Native Exceptions ?
Heureusement, C# fournit également un mécanisme pour détecter les exceptions natives. La question est : les blocs try...catch standard peuvent-ils gérer ces exceptions non gérées sans aucune modification ?
Réponse : Capturer les exceptions natives
Pour intercepter les exceptions natives, vous pouvez utilisez la classe Win32Exception. Il propose une propriété nommée NativeErrorCode qui vous permet d'examiner le code d'erreur et de gérer des cas spécifiques en conséquence.
Par exemple, considérons l'extrait de code suivant :
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); } } }
Dans cet exemple, nous essayons pour lancer une application native associée à un type de fichier spécifique. Si l'application ne peut pas être démarrée, une Win32Exception est levée avec un code d'erreur associé. L'instruction if dans le bloc catch vérifie les codes d'erreur spécifiques et affiche un message approprié.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!