Capturer une exception spécifique
Dans l'étape précédente, vous avez appris à connaître différents types d'exceptions en Python. Maintenant, vous allez apprendre à capturer une exception spécifique en utilisant le bloc try...except
. Cela vous permet de gérer les différentes erreurs de manière différente, rendant votre code plus robuste.
Lorsque vous capturez des exceptions, il est recommandé d'être aussi spécifique que possible. Cela empêche votre bloc except
de capturer accidentellement des exceptions qu'il n'est pas conçu pour gérer, ce qui peut masquer les erreurs et rendre le débogage plus difficile.
Modifions le script exceptions_demo.py
pour capturer une exception spécifique, comme ValueError
, lors de la conversion d'une chaîne de caractères en entier.
- Ouvrez le fichier
exceptions_demo.py
dans le répertoire ~/project
en utilisant VS Code.
- Modifiez le script pour capturer uniquement l'exception
ValueError
lors de la conversion d'une chaîne de caractères en entier :
try:
num = int("abc")
except ValueError as e:
print(f"ValueError caught: {e}")
except Exception as e:
print(f"Some other exception: {e}")
print("Continuing execution...")
Dans cet exemple, nous capturons spécifiquement l'exception ValueError
qui se produit lorsque int("abc")
échoue. Si une autre exception se produit dans le bloc try
, elle sera capturée par le bloc except Exception as e:
. La déclaration print("Continuing execution...")
sera toujours exécutée si une exception est capturée, démontrant que le programme continue de s'exécuter après avoir géré l'exception.
Maintenant, exécutons le script :
- Ouvrez le terminal dans VS Code.
- Accédez au répertoire
~/project
:
cd ~/project
- Exécutez le script
exceptions_demo.py
en utilisant la commande python :
python exceptions_demo.py
Vous devriez voir la sortie suivante :
ValueError caught: invalid literal for int() with base 10: 'abc'
Continuing execution...
Cette sortie montre que l'exception ValueError
a été capturée et que le programme a continué son exécution.
Maintenant, modifions le script pour lever une autre exception, comme TypeError
, et voyons comment elle est gérée :
- Ouvrez le fichier
exceptions_demo.py
dans le répertoire ~/project
en utilisant VS Code.
- Modifiez le script pour lever une exception
TypeError
:
try:
result = 1 + "a"
except ValueError as e:
print(f"ValueError caught: {e}")
except Exception as e:
print(f"Some other exception: {e}")
print("Continuing execution...")
Maintenant, exécutons le script à nouveau :
python exceptions_demo.py
Vous devriez voir la sortie suivante :
Some other exception: unsupported operand type(s) for +: 'int' and 'str'
Continuing execution...
Cette sortie montre que l'exception TypeError
a été capturée par le bloc except Exception as e:
, car il n'y a pas de bloc except TypeError
spécifique.
La capture d'exceptions spécifiques vous permet de gérer les différentes erreurs de manière différente, rendant votre code plus robuste et plus facile à déboguer. Dans l'étape suivante, vous apprendrez à vérifier l'instance d'une exception.