Wie man prüft, ob in Python eine Ausnahme ausgelöst wurde

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie prüfen können, ob in Python eine Ausnahme (Exception) ausgelöst wurde. Das Lab konzentriert sich auf das Verständnis von Ausnahmen und die Verwendung von try-except-Blöcken, um diese auszufangen und zu behandeln, um so Abstürze des Programms zu vermeiden.

Sie beginnen damit, ein Python-Skript zu erstellen, das eine ZeroDivisionError-Ausnahme auslöst. Anschließend lernen Sie, wie Sie einen try-except-Block verwenden, um diese Ausnahme auszufangen und sie elegant zu behandeln, damit Ihr Programm weiterhin laufen kann.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ErrorandExceptionHandlingGroup(["Error and Exception Handling"]) python/ErrorandExceptionHandlingGroup -.-> python/catching_exceptions("Catching Exceptions") python/ErrorandExceptionHandlingGroup -.-> python/raising_exceptions("Raising Exceptions") subgraph Lab Skills python/catching_exceptions -.-> lab-559611{{"Wie man prüft, ob in Python eine Ausnahme ausgelöst wurde"}} python/raising_exceptions -.-> lab-559611{{"Wie man prüft, ob in Python eine Ausnahme ausgelöst wurde"}} end

Ausnahmen verstehen

In diesem Schritt lernen Sie über Ausnahmen (Exceptions) in Python. Ausnahmen sind Ereignisse, die während der Ausführung eines Programms auftreten und den normalen Ablauf der Anweisungen unterbrechen. Das Verständnis von Ausnahmen ist entscheidend für das Schreiben von robustem und zuverlässigem Python-Code.

Wenn in Python ein Fehler auftritt, wird eine Ausnahme ausgelöst. Wenn die Ausnahme nicht behandelt wird, wird das Programm beendet und eine Fehlermeldung angezeigt. Allerdings können Sie mit try-except-Blöcken Ausnahmen auffangen und behandeln, um zu verhindern, dass Ihr Programm abstürzt.

Beginnen wir mit einem einfachen Beispiel, das eine Ausnahme auslöst:

  1. Öffnen Sie den VS Code-Editor in der LabEx-Umgebung.

  2. Erstellen Sie eine neue Datei mit dem Namen division.py im Verzeichnis ~/project.

    ~/project/division.py
  3. Fügen Sie den folgenden Code in die Datei division.py ein:

    numerator = 10
    denominator = 0
    result = numerator / denominator
    print(result)

    Dieser Code versucht, 10 durch 0 zu teilen, was eine ungültige Operation ist und eine ZeroDivisionError-Ausnahme auslöst.

  4. Führen Sie das Skript mit dem folgenden Befehl im Terminal aus:

    python division.py

    Sie werden eine Ausgabe ähnlich der folgenden sehen:

    Traceback (most recent call last):
      File "/home/labex/project/division.py", line 3, in <module>
        result = numerator / denominator
    ZeroDivisionError: division by zero

    Die Rückverfolgung (Traceback) zeigt, dass eine ZeroDivisionError in Zeile 3 der Datei division.py aufgetreten ist. Das Programm wurde beendet, weil die Ausnahme nicht behandelt wurde.

Nun sehen wir uns an, wie man diese Ausnahme mit einem try-except-Block behandeln kann.

Verwendung von try-except zum Abfangen

In diesem Schritt lernen Sie, wie Sie try-except-Blöcke verwenden, um Ausnahmen (Exceptions) in Python abzufangen und zu behandeln. Dadurch kann Ihr Programm auch dann weiterlaufen, wenn Fehler auftreten.

Die Grundstruktur eines try-except-Blocks ist wie folgt:

try:
    ## Code that might raise an exception
except ExceptionType:
    ## Code to handle the exception

Der Code innerhalb des try-Blocks wird ausgeführt. Wenn eine Ausnahme des Typs ExceptionType auftritt, wird der Code innerhalb des except-Blocks ausgeführt. Wenn keine Ausnahme auftritt, wird der except-Block übersprungen.

Ändern wir die Datei division.py aus dem vorherigen Schritt, um die ZeroDivisionError-Ausnahme zu behandeln:

  1. Öffnen Sie die Datei division.py im VS Code-Editor.

  2. Ändern Sie den Code, um einen try-except-Block einzufügen:

    try:
        numerator = 10
        denominator = 0
        result = numerator / denominator
        print(result)
    except ZeroDivisionError:
        print("Error: Cannot divide by zero.")

    In diesem Code enthält der try-Block die Divisionsoperation, die möglicherweise eine ZeroDivisionError auslöst. Der except-Block fängt die ZeroDivisionError ab und gibt eine Fehlermeldung aus.

  3. Führen Sie das Skript mit dem folgenden Befehl im Terminal aus:

    python division.py

    Sie werden die folgende Ausgabe sehen:

    Error: Cannot divide by zero.

    Anstatt abzustürzen, behandelt das Programm jetzt die ZeroDivisionError elegant und gibt eine informative Meldung aus.

Dies zeigt, wie try-except-Blöcke verwendet werden können, um zu verhindern, dass Ihr Programm aufgrund von Ausnahmen abstürzt.

Die Ausnahmetypen untersuchen

In diesem Schritt lernen Sie, wie Sie den Typ einer Ausnahme (Exception) untersuchen und auf die Ausnahmemeldung innerhalb des except-Blocks zugreifen können. Dies ermöglicht es Ihnen, verschiedene Arten von Ausnahmen unterschiedlich zu behandeln und informativere Fehlermeldungen bereitzustellen.

Wenn eine Ausnahme gefangen wird, können Sie sie mithilfe des Schlüsselworts as in der except-Klausel einer Variablen zuweisen:

try:
    ## Code that might raise an exception
except ExceptionType as e:
    ## Code to handle the exception
    ## 'e' is the exception object

Die Variable e enthält dann das Ausnahmeobjekt, mit dem Sie Informationen über die Ausnahme, wie z. B. ihren Typ und ihre Meldung, abrufen können.

Ändern wir die Datei division.py, um den Ausnahmetyp zu untersuchen und die Ausnahmemeldung auszugeben:

  1. Öffnen Sie die Datei division.py im VS Code-Editor.

  2. Ändern Sie den Code, um den Ausnahmetyp zu untersuchen und die Meldung auszugeben:

    try:
        numerator = 10
        denominator = 0
        result = numerator / denominator
        print(result)
    except ZeroDivisionError as e:
        print(f"Error: {type(e).__name__} - {e}")

    In diesem Code fangen wir die ZeroDivisionError und weisen sie der Variablen e zu. Dann verwenden wir type(e).__name__, um den Namen des Ausnahmetyps zu erhalten, und e, um die Ausnahmemeldung zu erhalten. Wir geben beide in einem formatierten String aus.

  3. Führen Sie das Skript mit dem folgenden Befehl im Terminal aus:

    python division.py

    Sie werden die folgende Ausgabe sehen:

    Error: ZeroDivisionError - division by zero

    Die Ausgabe enthält jetzt den Ausnahmetyp (ZeroDivisionError) und die Ausnahmemeldung (division by zero).

Dies ermöglicht es Ihnen, detailliertere Informationen über den aufgetretenen Fehler bereitzustellen, was das Debuggen Ihres Codes erleichtert. Sie können diese Informationen auch nutzen, um verschiedene Arten von Ausnahmen unterschiedlich zu behandeln und für jeden Fall eine spezifischere Fehlerbehandlung bereitzustellen.

Zusammenfassung

In diesem Lab haben Sie sich mit Ausnahmen (Exceptions) in Python vertraut gemacht. Ausnahmen sind Ereignisse, die den normalen Ablauf eines Programms stören. Wenn ein Fehler auftritt, wird eine Ausnahme ausgelöst, und wenn diese nicht behandelt wird, wird das Programm beendet.

Sie haben auch gelernt, wie Sie try-except-Blöcke verwenden können, um Ausnahmen abzufangen und zu behandeln und so Programmabstürze zu vermeiden. Im Lab wurde eine ZeroDivisionError gezeigt und wie man diese mit try-except behandelt.