Maison >développement back-end >C++ >Comment puis-je détecter et gérer les exceptions natives en C# ?

Comment puis-je détecter et gérer les exceptions natives en C# ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-03 18:42:41848parcourir

How Can I Catch and Handle Native Exceptions in C#?

Détecter les exceptions natives dans le code C#

En programmation C#, il est possible de détecter les exceptions provenant de bibliothèques non gérées, souvent appelées « natives exceptions." Ces exceptions se produisent lorsque le code natif sous-jacent rencontre une erreur qui ne peut pas être gérée dans le code géré.

Comment intercepter les exceptions natives

Pour intercepter les exceptions natives, vous pouvez utilisez la classe Win32Exception. Cette classe expose une propriété NativeErrorCode qui contient le code d'erreur généré par la bibliothèque non gérée. Vous pouvez utiliser cette propriété pour gérer l'exception de manière appropriée.

Exemple d'utilisation

L'exemple suivant montre comment intercepter une exception native et la gérer à l'aide de la classe Win32Exception :

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, la méthode OpenFile() tente d'ouvrir un fichier à l'aide d'une application native. Si le fichier est introuvable, l'accès est refusé ou aucune application n'est associée au type de fichier, une exception native est levée. Le bloc catch utilise la classe Win32Exception pour intercepter l'exception et la gérer de manière appropriée en affichant une boîte de message avec les détails de l'erreur.

Remarque : Vous n'avez pas besoin d'apporter de modifications particulières au try...catch block pour intercepter les exceptions natives. Le mécanisme standard try...catch est suffisant pour gérer les exceptions gérées et natives.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn