En Python, que fait la clause 'else' dans une instruction 'try' ?

Comprendre la clause 'else' dans les instructions 'try' en Python

La clause 'else' en Python est utilisée dans les instructions 'try', et son comportement peut surprendre si on le compare à son utilisation plus familière dans les instructions 'if'. En effet, dans le contexte d'une instruction 'try', la clause 'else' s'exécute si le bloc 'try' ne soulève pas d'exception.

Usage de la clause 'else'

Prenons l'exemple d'un morceau de code Python simple :

try:
    # Bloc de code susceptible de lever une exception
except SomeException:
    # Traitement de l'exception
else:
    # Ce bloc sera exécuté si aucune exception n'est levée

Dans ce code, le bloc 'try' contient du code qui peut potentiellement lever une exception. Si une exception est levée, le bloc 'except' correspondant attrape et traite cette exception. Si aucune exception n'est levée dans le bloc 'try', alors le bloc 'else' est exécuté.

Il est important de noter que le bloc 'else' n'est pas exécuté si une exception est levée qui n'est pas attrapée par un bloc 'except'. De plus, si une exception est levée dans le bloc 'else', elle n'est pas attrapée par l'instruction 'try'.

Bonnes pratiques

La clause 'else' peut être utile pour améliorer la lisibilité du code. En déplaçant le code qui ne doit être exécuté que si aucune exception n'est levée dans le bloc 'else', on donne un indice visuel indiquant clairement quelle partie du code est associée à la gestion des erreurs et quelle partie ne l'est pas.

Cependant, son utilisation n'est pas toujours nécessaire et peut parfois conduire à une complexité inutile. Parfois, il peut être plus claire de simplement continuer le code normal après le bloc 'try/except', en sachant que ce code ne sera atteint que si aucune exception n'est levée.

En somme, l'usage de la clause 'else' dans une instruction 'try' en Python est une fonctionnalité puissante qui, utilisée correctement, peut améliorer la lisibilité et la robustesse de votre code.

Trouvez-vous cela utile?