Exceptions Python

Il est important d'avoir un moyen de gérer les erreurs.

Python nous donne la gestion des exceptions.

Si vous encapsulez des lignes de code dans untry:bloquer:

try:
    # some lines of code

Si une erreur se produit, Python vous alertera et vous pourrez déterminer quel type d'erreur s'est produit à l'aide d'unexceptblocs:

try:
    # some lines of code
except <ERROR1>:
    # handler <ERROR1>
except <ERROR2>:
    # handler <ERROR2>

Pour attraper toutes les exceptions, vous pouvez utiliserexceptsans aucun type d'erreur:

try:
    # some lines of code
except <ERROR1>:
    # handler <ERROR1>
except:
    # catch all other exceptions

Leelseblock est exécuté si aucune exception n'a été trouvée:

try:
    # some lines of code
except <ERROR1>:
    # handler <ERROR1>
except <ERROR2>:
    # handler <ERROR2>
else:
    # no exceptions were raised, the code ran successfully

UNEfinallyblock vous permet d'effectuer une opération dans tous les cas, que l'erreur se soit produite ou non

try:
    # some lines of code
except <ERROR1>:
    # handler <ERROR1>
except <ERROR2>:
    # handler <ERROR2>
else:
    # no exceptions were raised, the code ran successfully
finally:
    # do something in any case

L'erreur spécifique qui va se produire dépend de l'opération que vous effectuez.

Par exemple, si vous lisez un fichier, vous pourriez obtenir unEOFError. Si vous divisez un nombre par zéro, vous obtiendrez unZeroDivisionError. Si vous rencontrez un problème de conversion de type, vous pourriez obtenir unTypeError.

Essayez ce code:

result = 2 / 0
print(result)

Le programme se terminera avec une erreur

Traceback (most recent call last):
  File "main.py", line 1, in <module>
    result = 2 / 0
ZeroDivisionError: division by zero

and the lines of code after the error will not be executed.

Adding that operation in a try: block lets us recover gracefully and move on with the program:

try:
    result = 2 / 0
except ZeroDivisionError:
    print('Cannot divide by zero!')
finally:
    result = 1

print(result) # 1

You can raise exceptions in your own code, too, using the raise statement:

raise Exception('An error occurred!')

This raises a general exception, and you can intercept it using:

try:
    raise Exception('An error occurred!')
except Exception as error:
    print(error)

You can also define your own exception class, extending from Exception:

class DogNotFoundException(Exception):
    pass

pass here means “nothing” and we must use it when we define a class without methods, or a function without code, too.

try:
    raise DogNotFoundException()
except DogNotFoundException:
    print('Dog not found!')

More python tutorials: