English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Python Grund教程

Python Flusssteuerung

Funktion in Python

Datentypen in Python

Python Dateioperationen

Python Objekte und Klassen

Python Datum und Zeit

Erweiterte Python-Kenntnisse

Python Referenzhandbuch

Benutzerdefinierte Ausnahmen in Python

Python hat vieleEingebauten Ausnahmen, die Ihren Programmen Fehlermeldungen zwingen, wenn einige Fehler auftreten.

Manchmal müssen Sie jedoch benutzerdefinierte Ausnahmen erstellen, die Ihren Zwecken entsprechen.

In Python können Benutzer durch Erstellen neuer Klassen solches Ausnahmen definieren. Diese Ausnahmen müssen direkt oder indirekt von der Exception-Klasse abgeleitet werden. Die meisten eingebauten Ausnahmen werden auch von dieser Klasse abgeleitet.

>>> class CustomError(Exception):
...    pass
...
>>> raise CustomError
Rückverfolgung (letzte Anruf als erstes):
...
__main__.CustomError
>>> raise CustomError("Ein Fehler ist aufgetreten")
Rückverfolgung (letzte Anruf als erstes):
...
__main__.CustomError: Ein Fehler ist aufgetreten

Hier erstellen wir eine benutzerdefinierte Ausnahme namens CustomError, die von der Exception-Klasse abgeleitet ist. Wie andere Ausnahmen können Sie diese neue Ausnahme mit einem raise-Ausdruck mit optionalem Fehlermessage auslösen.

Wenn wir große Python-Programme entwickeln, ist es am besten, alle von einem Programm ausgelösten benutzerdefinierten Ausnahmen in einer separaten Datei zu platzieren. Viele Standardmodule können dies tun. Sie definieren die Ausnahmen in exceptions.py oder errors.py.

Benutzerdefinierte Ausnahmen können alle Operationen ausführen, die eine normale Klasse ausführen kann, aber wir machen sie in der Regel einfach und klar. Die meisten Implementierungen deklarieren eine benutzerdefinierte Basisklasse und leiten andere Ausnahmen von dieser Klasse ab. Im folgenden Beispiel wird dieses Konzept klarer.

Beispiel: Benutzerdefinierte Ausnahmen in Python

In diesem Beispiel erläutern wir, wie man in einem Programm benutzerdefinierte Ausnahmen verwendet, um Fehler auszulösen und zu fangen.

Dieses Programm verlangt vom Benutzer, eine Zahl einzugeben, bis sie den gespeicherten Zahl korrekt erraten. Um ihnen zu helfen, dies zu klären, wird angezeigt, ob ihre Schätzung größer oder kleiner als die gespeicherte Zahl ist.

# Definition der benutzerdefinierten Ausnahmen in Python
class Error(Exception):
   """Basisklasse für andere Ausnahmen"""
   pass
class ValueTooSmallError(Error):
   """Wird ausgelöst, wenn der Eingabewert zu klein ist"""
   pass
class ValueTooLargeError(Error):
   """Wird ausgelöst, wenn der Eingabewert zu groß ist"""
   pass
# Unser Hauptprogramm
# Der Benutzer gibt eine Zahl ein, bis er/Sie hat es erraten
# Sie müssen diese Zahl erraten
number = 10
while True:
   try:
       i_num = int(input("Geben Sie eine Zahl ein: "))
       if i_num < number:
           raise ValueTooSmallError
       elif i_num > number:
           raise ValueTooLargeError
       break
   except ValueTooSmallError:
       print("Dieser Wert ist zu klein, bitte versuchen Sie es noch einmal!")
       print()
   except ValueTooLargeError:
       print("Dieser Wert ist zu groß, bitte versuchen Sie es noch einmal!")
       print()
print("Herzlichen Glückwunsch! Du hast es erraten.")

Dies ist ein Beispiel für die Ausführung dieses Programms.

Geben Sie eine Zahl ein: 12
Dieser Wert ist zu groß, bitte versuchen Sie es noch einmal!
Geben Sie eine Zahl ein: 0
Dieser Wert ist zu klein, bitte versuchen Sie es noch einmal!
Geben Sie eine Zahl ein: 9
Dieser Wert ist zu klein, bitte versuchen Sie es noch einmal!
Geben Sie eine Zahl ein: 10
Herzlichen Glückwunsch! Du hast es erraten.

Hier definieren wir eine Basisklasse namens Error.

Unsere von unserem Programm tatsächlich ausgelösten beiden zusätzlichen Ausnahmen (ValueTooSmallError und ValueTooLargeError) werden von dieser Klasse abgeleitet. Dies ist der Standardmethodus zur Definition von benutzerdefinierten Ausnahmen in der Python-Programmierung, aber Sie sind nicht darauf beschränkt.

Besuchen Sie diese Seite, um mehr zu erfahrenWie werden Ausnahmen in Python behandelt?.