Introduction
Bienvenue au laboratoire sur les erreurs de syntaxe et les exceptions en Python! Dans ce laboratoire, vous allez apprendre à identifier et corriger les erreurs de syntaxe dans votre code Python, ainsi qu'à gérer les exceptions qui peuvent être levées pendant l'exécution de votre code.
Objectifs
- Erreurs de syntaxe
- Exceptions
Comprendre les erreurs de syntaxe
Une erreur de syntaxe se produit lorsque l'interpréteur Python est incapable de comprendre la structure de votre code. Cela peut être dû à diverses raisons, telles que des parenthèses manquantes ou une indentation incorrecte.
Ouvrez un nouvel interpréteur Python.
python3
Voici un exemple d'erreur de syntaxe causée par l'absence d'un deux-points à la fin d'une boucle for :
for i in range(10)
print(i)
L'interpréteur générera une erreur de syntaxe et nous dira où l'erreur s'est produite :
File "<stdin>", line 1
for i in range(10)
^
SyntaxError: invalid syntax
Le symbole de carat (^) indique l'emplacement de l'erreur de syntaxe, et le message d'erreur nous dit que la syntaxe est invalide.
Pour corriger cette erreur de syntaxe, il suffit d'ajouter le deux-points à la fin de la boucle for :
for i in range(10):
print(i)
Maintenant, essayons un exemple avec une indentation incorrecte :
if True:
print("Hello, World!")
Dans cet exemple, l'instruction print n'est pas correctement indentée sous l'instruction if. Pour corriger cette erreur de syntaxe, nous devons indent l'instruction print correctement :
if True:
print("Hello, World!")
Gérer les exceptions
Une exception est une erreur qui se produit pendant l'exécution d'un programme. En Python, nous pouvons gérer les exceptions à l'aide des instructions try et except.
Voici un exemple de la manière de gérer une exception ZeroDivisionError :
try:
x = 10 / 0
except ZeroDivisionError:
print("Impossible de diviser par zéro!")
Dans cet exemple, le bloc try contient du code qui peut lever une exception ZeroDivisionError. Si l'exception est levée, le contrôle est transféré au bloc except, qui gère l'exception en affichant un message d'erreur.
Nous pouvons également gérer plusieurs exceptions dans le même bloc try en utilisant l'instruction except avec plusieurs exceptions :
try:
x = 10 / 0
y = int('abc')
except ZeroDivisionError:
print("Impossible de diviser par zéro!")
except ValueError:
print("Entrée invalide!")
Dans cet exemple, le bloc try contient du code qui peut lever une ZeroDivisionError ou une ValueError. Si une ZeroDivisionError est levée, le bloc except avec la ZeroDivisionError la gérera. Si une ValueError est levée, le bloc except avec la ValueError la gérera.
Lever des exceptions
En plus de gérer les exceptions, nous pouvons également lever des exceptions dans notre code à l'aide de l'instruction raise.
Voici un exemple de la manière de lever une exception ValueError :
def validate_age(age):
if age < 0:
raise ValueError("L'âge ne peut pas être négatif.")
try:
validate_age(-1)
except ValueError as e:
print(e)
Dans cet exemple, la fonction validate_age lève une exception ValueError si l'âge est négatif. Le bloc try appelle la fonction validate_age avec un âge négatif, ce qui provoque la levée de l'exception ValueError. Le bloc except gère l'exception et affiche le message d'erreur.
Capturer toutes les exceptions
Parfois, nous pouvons vouloir capturer toutes les exceptions qui peuvent être levées dans un bloc try. Nous pouvons le faire en utilisant l'instruction except sans spécifier d'exception :
try:
x = 10 / 0
y = int('abc')
except:
print("Une erreur s'est produite!")
Dans cet exemple, le bloc try contient du code qui peut lever une ZeroDivisionError ou une ValueError. Si l'une ou l'autre des exceptions est levée, elle sera capturée par le bloc except, qui affiche un message d'erreur.
La clause Else
Nous pouvons utiliser la clause else dans une instruction try pour spécifier un bloc de code qui doit être exécuté seulement si aucune exception n'est levée dans le bloc try :
try:
x = int(input("Entrez un nombre : "))
except ValueError:
print("Entrée invalide!")
else:
print("Le nombre est", x)
Dans cet exemple, le bloc try contient du code qui peut lever une ValueError si l'utilisateur entre une valeur invalide. Si aucune exception n'est levée, le bloc else est exécuté et le nombre est affiché.
La clause Finally
Nous pouvons utiliser la clause finally dans une instruction try pour spécifier un bloc de code qui devrait toujours être exécuté, que l'exception soit levée ou non :
try:
x = int(input("Entrez un nombre : "))
except ValueError:
print("Entrée invalide!")
finally:
print("Sortie du programme.")
Dans cet exemple, le bloc try contient du code qui peut lever une ValueError si l'utilisateur entre une valeur invalide. Que l'exception soit levée ou non, le bloc finally est toujours exécuté et le programme est terminé.
Résumé
Dans ce laboratoire, vous avez appris à identifier et corriger les erreurs de syntaxe dans votre code Python, ainsi qu'à gérer les exceptions à l'aide des instructions try et except. Vous avez également appris à lever des exceptions dans votre code à l'aide de l'instruction raise, et à utiliser les clauses else et finally dans une instruction try.
J'espère que ce laboratoire vous a été utile et que vous vous sentez plus confiant pour travailler avec les erreurs de syntaxe et les exceptions en Python!



