Maison >développement back-end >C++ >Le bloc C# « finally » s'exécute-t-il toujours ?

Le bloc C# « finally » s'exécute-t-il toujours ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-01 07:54:12523parcourir

Does the C# `finally` Block Always Execute?

Le bloc C# "finalement" s'exécute-t-il toujours ?

Considérez l'extrait de code suivant :

public void DoesThisExecute()
{
    string ext = "xlsx";
    string message = string.Empty;
    try
    {
        switch (ext)
        {
            case "xls": message = "Great choice!"; break;
            case "csv": message = "Better choice!"; break;
            case "exe": message = "Do not try to break me!"; break;
            default:
                message = "You will not win!";
                return;
        }
    }
    catch (Exception)
    {
        // Handle an exception.
    }
    finally
    {
        MessageBox.Show(message);
    }
}

Dans dans cet exemple, le bloc "finally" contient un appel à MessageBox.Show(message).

Ce bloc "finally" s'exécute-t-il toujours ?

Non, ce n'est pas le cas. Le bloc "finally" ne s'exécutera que si l'application est toujours en cours d'exécution au moment où le bloc try/catch se termine. Plus précisément, il ne s'exécutera pas si :

  • Une exception est levée et entraîne une exception FastFail.
  • L'application plante en raison d'une exception non gérée.
  • Le l'application est terminée manuellement via une commande telle que "kill process".

Il est important de noter que le bloc "finally" est conçu pour garantir l'exécution d'actions cruciales, telles que le nettoyage des ressources ou la journalisation des informations, même lorsqu'une exception se produit. Cependant, il est crucial d'être conscient qu'il peut ne pas s'exécuter dans tous les scénarios, en particulier en cas de pannes d'application catastrophiques.

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