Instructions imbriquées try...except en Python

Vaibhav Vaibhav 22 janvier 2022
Instructions imbriquées try...except en Python

L’instruction try...except est utilisée en Python pour intercepter les exceptions ou exécuter du code sujet aux erreurs. Chaque langage de programmation a cette fonctionnalité de nos jours, mais en Python, il utilise ces mots et est représenté par les mots-clés try...except, respectivement. Outre try...except, un autre mot-clé, à savoir finally, pourrait également être utilisé avec eux.

Comme les boucles for, ces instructions try, catch et finally peuvent également être imbriquées, et Dans cet article, nous en parlerons.

Instructions try...except imbriquées en Python

Comme mentionné ci-dessus, nous pouvons imbriquer ces instructions de la même manière que nous imbriquons les boucles for. Référez-vous au code suivant pour un exemple.

a = {"a": 5, "b": 25, "c": 125}

try:
    print(a["d"])
except KeyError:
    try:
        print("a:", a["a"])
    except:
        print("No value exists for keys 'a' and 'd'")
    finally:
        print("Nested finally")
finally:
    print("Finally")

Production :

a: 5
Nested finally
Finally

Comme on peut le voir, le programme ci-dessus initialise d’abord un dictionnaire avec quelques paires clé-valeur puis essaie d’accéder à la valeur de la clé d. Comme aucune paire clé-valeur n’existe, une exception KeyError est levée et interceptée par l’instruction except. Ensuite, les interpréteurs exécutent le code sous le bloc try imbriqué. Puisqu’une valeur existe pour la clé a, elle est imprimée sur la console et le code sous l’instruction imbriquée finally est exécuté. Enfin, le code sous l’instruction externe finally est exécuté.

Cela signifie que nous pouvons mettre les instructions try, catch et finally sous n’importe quelle déclaration try, catch et finally. Laissez comprendre cela avec un exemple. Nous allons écrire du code qui contient des instructions try, catch et finally et toutes ces instructions ont également des instructions try, catch et finally sous elles.

a = {
    "a": 5,
    "b": 25,
    "c": 125,
    "e": 625,
    "f": 3125,
}

try:
    try:
        print("d:", a["d"])
    except:
        print("a:", a["a"])
    finally:
        print("First nested finally")
except KeyError:
    try:
        print("b:", a["b"])
    except:
        print("No value exists for keys 'b' and 'd'")
    finally:
        print("Second nested finally")
finally:
    try:
        print("c:", a["c"])
    except:
        print("No value exists for key 'c'")
    finally:
        print("Third nested finally")

Production :

a: 5
First nested finally
c: 125
Third nested finally

Comme nous pouvons le voir, tout d’abord, le bloc externe try est exécuté. Étant donné qu’aucune valeur n’est trouvée pour la clé d, le code sous l’instruction imbriquée except est exécuté et l’instruction imbriquée finally. Étant donné que le bloc externe try n’a reçu aucune exception pendant l’exécution, son bloc except est ignoré et le code sous le bloc externe finally est exécuté.

Nous pouvons même aller plus loin comme nous le souhaitons et créer n niveaux d’instructions try, catch et finally imbriquées. Mais à mesure que le nombre de niveaux imbriqués augmente, le flux de contrôle ou le flux d’exécution devient un peu compliqué et ingérable. Il devient difficile de naviguer à travers les déclarations try, catch et finally.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Article connexe - Python Statement