CodeGym /Java Kurs /Python SELF DE /Auslösen von Ausnahmen

Auslösen von Ausnahmen

Python SELF DE
Level 18 , Lektion 0
Verfügbar

6.1 Gezieltes Auslösen von Ausnahmen

In Python kannst du absichtlich Ausnahmen auslösen, indem du den Operator raise verwendest. Damit kannst du auf einen Fehler oder eine falsche Situation in deinem Programm hinweisen. Lass uns verschiedene Wege anschauen, wie man den raise-Operator benutzt und Ausnahmen neu verpackt.

Auslösen von Standard-Ausnahmen

Der allgemeine Syntax für diese Operation sieht so aus:


raise exception

Du kannst Standard-Ausnahmen wie Exception, TypeError und andere auslösen, indem du ihnen entsprechende Nachrichten übergibst.

Beispiel: raise Exception


def check_number(value):
    if value < 0:
        raise Exception("Sorry, keine Zahlen unter Null")
        
try:
    check_number(-5)
except Exception as e:
    print(f"Ausnahme gefangen: {e}")

In diesem Beispiel, wenn der Wert kleiner als Null ist, wird eine Exception mit der Nachricht "Sorry, keine Zahlen unter Null" ausgelöst.

Beispiel: raise TypeError


def check_integer(value):
    if not isinstance(value, int):
        raise TypeError("Nur ganze Zahlen sind erlaubt")
        
try:
    check_integer("string")
except TypeError as e:
    print(f"Ausnahme gefangen: {e}")

In diesem Beispiel, wenn der Wert keine ganze Zahl ist, wird ein TypeError mit der Nachricht "Nur ganze Zahlen sind erlaubt" ausgelöst.

6.2 Neupacken von Ausnahmen

Manchmal ist es notwendig, eine Ausnahme abzufangen und eine andere auszulösen, um spezifischere oder nützlichere Informationen bereitzustellen. Dies kann mit dem Operator raise ... from gemacht werden, der die ursprüngliche Ausnahme als Grund für die neue speichert.

Der allgemeine Syntax für diese Operation sieht so aus:


raise neue_ausnahme from alte_ausnahme

Beispiel: Neupacken von Ausnahmen


class EmptyVariableError(Exception):
    pass
        
def check_non_empty(value):
    if value == "":
        raise ValueError("Die Variable ist leer")
        
try:
    check_non_empty("")
except ValueError as e:
    raise EmptyVariableError("Leere Variable entdeckt") from e

In diesem Beispiel, wenn der Wert der Variable leer ist, wird zuerst ein ValueError mit der Nachricht "Die Variable ist leer" ausgelöst. Diese Ausnahme wird dann abgefangen, und eine neue Ausnahme EmptyVariableError mit der Nachricht "Leere Variable entdeckt" ausgelöst, wobei die ursprüngliche Ausnahme mit from übergeben wird.

6.3 Analyse von neu verpackten Ausnahmen

Die Verwendung des Operators raise ... from erlaubt das Speichern der Informationskette von Ausnahmen, was bei der Fehlersuche nützlich sein kann. Du kannst neu verpackte Ausnahmen und deren Ursachen analysieren.

Beispiel der Analyse von neu verpackten Ausnahmen:


class EmptyVariableError(Exception):
    pass
        
def check_non_empty(value):
    if value == "":
        raise ValueError("Die Variable ist leer")
        
try:
    check_non_empty("")
except ValueError as e:
    raise EmptyVariableError("Leere Variable entdeckt") from e

Ausführen des obigen Codes führt zu folgendem Output:


Traceback (most recent call last):
    File "example.py", line 8, in 
        check_non_empty("")
    File "example.py", line 5, in check_non_empty
        raise ValueError("Die Variable ist leer")
ValueError: Die Variable ist leer
          
The above exception was the direct cause of the following exception:
          
Traceback (most recent call last):
    File "example.py", line 10, in 
        raise EmptyVariableError("Leere Variable entdeckt") from e
EmptyVariableError: Leere Variable entdeckt

Der erste Fehler (grün markiert) ist der ursprüngliche Fehler, der irgendwo tief im Code aufgetreten ist. Manchmal treten solche Fehler von Zeit zu Zeit auf, und das ist normales Verhalten des Programms.

Der zweite Fehler (blau markiert) ist ein höherstufiger Fehler. Dein Programm oder Framework sollte wissen, wie man es verarbeitet. Wenn du jedoch tiefer graben und die Ursachen des Fehlers herausfinden möchtest, hilft dir der grüne Fehler dabei.

Alles ist sehr vernünftig gemacht.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION