Menu
Coddy logo textTech

Gérer plusieurs exceptions

Fait partie de la section Logic & Flow du Journey Python de Coddy — leçon 65 sur 78.

En Python, nous pouvons gérer différents types d'exceptions dans des blocs except distincts. Cela nous permet de répondre différemment en fonction de l'erreur spécifique qui se produit.

Commencez par une structure try-except de base :

try:
    # Code qui pourrait lever des exceptions
    pass
except Exception as e:
    # Gérer n'importe quelle exception
    pass

Pour gérer plusieurs exceptions, ajoutez des blocs except spécifiques :

try:
    number = int(input("Enter a number: "))
    result = 10 / number
    print(result)
except ValueError:
    print("That's not a valid number!")
except ZeroDivisionError:
    print("Cannot divide by zero!")

Vous pouvez également intercepter plusieurs types d'exceptions dans un seul bloc except :

try:
    # Un certain code
    pass
except (ValueError, TypeError):
    print("Invalid input type!")

L'ordre des blocs except est important - placez toujours les exceptions les plus spécifiques avant les plus générales.

challenge icon

Défi

Facile

Créez une fonction appelée process_data qui :

  1. Prend en entrée une chaîne de caractères représentant des données potentielles
  2. Tente de la convertir en un entier, puis calcule 100 divisé par cet entier
  3. Retourne le résultat
  4. Gère au moins 3 exceptions possibles : 
    • ValueError si l'entrée ne peut pas être convertie en un entier (affiche "Input must be a number!")
    • ZeroDivisionError si l'entrée est 0 (affiche "Cannot divide by zero!")
    • Toute autre exception avec un gestionnaire générique (affiche "An unexpected error occurred!")

Aide-mémoire

Gérez différents types d'exceptions en utilisant plusieurs blocs except :

try:
    number = int(input("Enter a number: "))
    result = 10 / number
    print(result)
except ValueError:
    print("That's not a valid number!")
except ZeroDivisionError:
    print("Cannot divide by zero!")

Capturez plusieurs types d'exceptions dans un seul bloc except :

try:
    # Du code
    pass
except (ValueError, TypeError):
    print("Invalid input type!")

Placez toujours les exceptions plus spécifiques avant les plus générales dans l'ordre des blocs except.

Essayez vous-même

def process_data(input_string):
    try:
        # Tenter de convertir la chaîne d'entrée en un entier
        
        # Calculer 100 divisé par la valeur d'entrée
        
        # Retourner le résultat
        
    except ValueError:
        # Gérer le cas où l'entrée ne peut pas être convertie en un entier
        
    except ZeroDivisionError:
        # Gérer le cas où l'entrée est zéro
        
    except:
        # Gérer toutes les autres exceptions inattendues
        
    return None
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logic & Flow