[Python Internet of Things] Bases et grammaire de Python - Gestion des erreurs - Démarrage rapide de Python pour développer des programmes informatiques hôtes pour l'Internet des objets

Introduction

        Lors de l'écriture de code en Python, vous rencontrerez souvent des erreurs. Ces erreurs peuvent être dues à des erreurs de syntaxe, à des erreurs d'exécution ou à d'autres raisons. Python fournit des outils et des techniques intégrés pour traiter ces erreurs, permettant un meilleur diagnostic et une meilleure réparation des erreurs au fur et à mesure qu'elles surviennent.

2. Exemples courants

        Voici un exemple de code et des explications sur la gestion des erreurs Python.

        1. Erreur de syntaxe

Une SyntaxError se produit généralement lorsque vous utilisez la mauvaise syntaxe         dans votre code Python . Par exemple, le code suivant comporte une erreur de syntaxe car il manque un deux-points :

if x == 5
    print("x is equal to 5")

        entraînera l'erreur suivante :

File "example.py", line 1
    if x == 5
            ^
SyntaxError: invalid syntax

        Pour corriger cette erreur, ajoutez simplement deux-points à la fin de l'instruction 'if' :

if x == 5:
    print("x is equal to 5")

        2. Erreur de nom

Python génère une NameError lorsque vous utilisez une variable ou une fonction indéfinie         dans votre code . Par exemple, le code suivant génère une NameError car la variable 'y' n'est pas définie :

x = 10
print(y)

        entraînera l'erreur suivante :

Traceback (most recent call last):
  File "example.py", line 2, in <module>
    print(y)
NameError: name 'y' is not defined

        Afin de corriger cette erreur, vous devez d'abord définir la variable 'y' :

x = 10
y = 5
print(y)

        3.TypeErreur

Python lève TypeError lorsque vous utilisez des types de données incompatibles         dans votre code . Par exemple, le code suivant génère une TypeError car les entiers ne peuvent pas être concaténés avec des chaînes :

x = 10
print("The value of x is " + x)

        entraînera l'erreur suivante :

Traceback (most recent call last):
  File "example.py", line 2, in <module>
    print("The value of x is " + x)
TypeError: can only concatenate str (not "int") to str

        Pour corriger cette erreur, vous devez convertir l'entier en chaîne :

x = 10
print("The value of x is " + str(x))

        4. Erreur de valeur

        Python génère une ValueError lorsque vous utilisez une valeur non valide dans votre code. Par exemple, le code suivant génère ValueError car la fonction 'int' ne peut pas convertir la chaîne "abc" en entier :

x = int("abc")

        entraînera l'erreur suivante :

Traceback (most recent call last):
  File "example.py", line 1, in <module>
    x = int("abc")
ValueError: invalid literal for int() with base 10: 'abc'

        Pour corriger cette erreur, vous devez vérifier avant de convertir la chaîne en entier :

x_str = "abc"
if x_str.isdigit():
    x = int(x_str)
else:
    print("x_str is not a valid integer")

        5. FileNotFoundError

Python lève FileNotFoundError lorsque         vous essayez d'ouvrir un fichier qui n'existe pas . Par exemple, le code suivant lèvera FileNotFoundError car le fichier n'existe pas (cette partie sera partagée dans le prochain article) :

with open("example.txt", "r") as f:
    contents = f.read()

        entraînera l'erreur suivante :

Traceback (most recent call last):
  File "example.py", line 1, in <module>
    with open("example.txt", "r") as f:
FileNotFoundError: [Errno 2] No such file or directory: 'example.txt'

        Afin de corriger cette erreur, vous devez vous assurer que le fichier existe :

import os.path

filename = "example.txt"
if os.path.exists(filename):
    with open(filename, "r") as f:
        contents = f.read()
else:
    print(f"{filename} does not exist")

        6. ZeroDivisionError

Python lève ZeroDivisionError         lorsque vous essayez de diviser un autre nombre par 0 . Par exemple, le code suivant génère ZeroDivisionError :

x = 10 / 0

        entraînera l'erreur suivante :

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

        Pour corriger cette erreur, vous devez vous assurer que vous ne définissez pas le diviseur sur 0 :

x = 10
y = 2
if y != 0:
    z = x / y
    print(z)
else:
    print("y cannot be 0")

        7. essayez-sauf

        Outre les erreurs mentionnées ci-dessus, Python fournit également une instruction "try-except" pour gérer d'autres types d'erreurs. L'instruction 'try-except' essaie d'exécuter du code et intercepte une exception si quelque chose ne va pas . Voici un exemple de code :

try:
    x = int(input("Please enter a number: "))
    y = 10 / x
    print(y)
except ValueError:
    print("Please enter a valid integer.")
except ZeroDivisionError:
    print("Cannot divide by zero.")
except Exception as e:
    print(f"An error occurred: {e}")

        Dans le code ci-dessus, nous essayons d'abord de convertir la chaîne saisie par l'utilisateur en un entier. Si ValueError se produit, un message d'erreur est imprimé. Si le diviseur est 0, un autre message d'erreur est imprimé. Enfin, nous utilisons 'except Exception as e' pour gérer tout autre type d'erreur et afficher le message d'erreur.

        8. retraçage

        Python fournit également le module 'traceback' pour générer des rapports d'erreurs détaillés. 'Traceback' peut vous aider à mieux comprendre la cause des erreurs et vous guider pour les corriger. Voici un exemple de code :

import traceback

def divide(x, y):
    return x / y

try:
    result = divide(10, 0)
except Exception as e:
    print(traceback.format_exc())

        Dans le code ci-dessus, nous avons défini une fonction "diviser" pour diviser deux nombres. Nous essayons d'appeler la fonction 'divide' avec 0 comme diviseur et utilisons le module 'traceback' pour imprimer un rapport d'erreur détaillé lorsqu'une erreur se produit. L'exécution du code ci-dessus produira la sortie suivante :

Traceback (most recent call last):
  File "example.py", line 7, in <module>
    result = divide(10, 0)
  File "example.py", line 4, in divide
    return x / y
ZeroDivisionError: division by zero

        Dans la sortie ci-dessus, nous pouvons voir exactement où et pourquoi l'erreur s'est produite. Cela vous aidera à mieux comprendre et corriger les erreurs. (Je pense personnellement que cette méthode est rarement utilisée dans le développement de l'Internet des objets)

        9. journalisation

        Enfin, Python fournit également le module 'logging' pour vous aider à consigner les erreurs et déboguer les informations . Avec la "journalisation", vous pouvez enregistrer tous les messages que vous souhaitez , y compris les messages d'erreur, les messages d'avertissement et les messages de débogage . Voici un exemple de code :

import logging

logging.basicConfig(filename="example.log", level=logging.DEBUG)

def divide(x, y):
    try:
        result = x / y
    except ZeroDivisionError as e:
        logging.error("Cannot divide by zero")
        raise e
    return result

result = divide(10, 0)

        Dans le code ci-dessus, nous utilisons d'abord la méthode 'basicConfig' pour configurer l'enregistreur. Nous spécifions le nom du fichier journal et le niveau de journalisation. Ensuite, nous définissons une fonction 'diviser' pour diviser deux nombres. Si le diviseur est 0, nous enregistrons le message d'erreur en utilisant la méthode 'logging.error'. Enfin, nous appelons la fonction "diviser" dans la fonction principale.

        L'exécution du code ci-dessus générera un fichier journal 'example.log'. Le fichier contiendra les éléments suivants :

ERROR:root:Cannot divide by zero
Traceback (most recent call last):
  File "example.py", line 14, in <module>
    result = divide(10, 0)
  File "example.py", line 9, in divide
    raise e
ZeroDivisionError: division by zero

        Dans le fichier journal ci-dessus, nous pouvons voir les erreurs et les messages d'erreur qui se sont produits. Cela vous aidera à mieux suivre et résoudre les problèmes. (Je pense personnellement que cette méthode est rarement utilisée dans le développement de l'Internet des objets)

3. Points clés

        En programmation informatique, la maîtrise de l'anglais est très importante, y compris, mais sans s'y limiter, la lecture de documents et la recherche d'erreurs ! Donc, la meilleure façon est d'améliorer votre anglais !

Je suppose que tu aimes

Origine blog.csdn.net/qq_39724355/article/details/130671109
conseillé
Classement