Dans cette étape, vous apprendrez à vérifier directement pour des classes d'exceptions spécifiques dans vos blocs except
. C'est une méthode plus directe et souvent plus claire pour gérer les exceptions par rapport à l'utilisation de isinstance()
.
Créons un script Python pour démontrer ceci.
-
Ouvrez votre éditeur VS Code.
-
Créez un nouveau fichier nommé exception_classes.py
dans le répertoire ~/project
.
~/project/exception_classes.py
-
Ajoutez le code suivant au fichier exception_classes.py
:
try:
result = 10 / 0
except ZeroDivisionError as e:
print("Caught a ZeroDivisionError:", e)
except ArithmeticError as e:
print("Caught an ArithmeticError:", e)
except Exception as e:
print("Caught some other exception:", e)
print("Program continues...")
Dans ce script, nous essayons de diviser 10 par 0, ce qui lèvera une ZeroDivisionError
. Nous avons trois blocs except
: un pour ZeroDivisionError
, un pour ArithmeticError
et un pour Exception
.
-
Exécutez le script en utilisant la commande suivante dans le terminal :
python exception_classes.py
Cela affichera "Caught a ZeroDivisionError: division by zero" dans le terminal.
Exemple de sortie :
Caught a ZeroDivisionError: division by zero
Program continues...
La sortie montre que la ZeroDivisionError
a été capturée par le premier bloc except
.
Maintenant, modifions le script pour lever une autre exception.
-
Modifiez le fichier exception_classes.py
comme suit :
try:
result = int("abc")
except ZeroDivisionError as e:
print("Caught a ZeroDivisionError:", e)
except ValueError as e:
print("Caught a ValueError:", e)
except ArithmeticError as e:
print("Caught an ArithmeticError:", e)
except Exception as e:
print("Caught some other exception:", e)
print("Program continues...")
Dans ce script modifié, nous essayons de convertir la chaîne de caractères "abc" en entier, ce qui lèvera une ValueError
.
-
Exécutez le script à nouveau en utilisant la même commande :
python exception_classes.py
Cela affichera "Caught a ValueError: invalid literal for int() with base 10: 'abc'" dans le terminal.
Exemple de sortie :
Caught a ValueError: invalid literal for int() with base 10: 'abc'
Program continues...
Cette sortie montre que la ValueError
a été capturée par le deuxième bloc except
.
En spécifiant directement la classe d'exception dans le bloc except
, vous pouvez gérer différents types d'exceptions de manière claire et organisée. Cette approche est généralement préférée à l'utilisation de isinstance()
pour une gestion simple des exceptions.