0Pricing
Python Academy · Lektion

Benutzerdefinierte Ausnahmeklassen

Definieren Sie eigene Ausnahmetypen für eine klarere Fehlerkommunikation.

Benutzerdefinierte Ausnahmeklassen ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Einführung

Benutzerdefinierte Exception-Klassen machen Ihre Fehlerbehandlung explizit, selbstdokumentierend und für Aufrufer leicht präzise behandelbar.

Warum benutzerdefinierte Exceptions?

Integrierte Exceptions sind zu allgemein. Benutzerdefinierte Exceptions ermöglichen es Aufrufern, nur die Fehler IHRER Bibliothek abzufangen, ohne unabhängige Fehler abzufangen.
class AppError(Exception):
    pass
raise AppError('something went wrong')

Von Exception erben

class MyError(Exception): pass ist alles, was Sie benötigen. Erben Sie immer von Exception, nicht von BaseException.
class ValidationError(Exception):
    pass
try:
    raise ValidationError('email is invalid')
except ValidationError as e:
    print(e)

Benutzerdefinierte Attribute hinzufügen

class APIError(Exception): def __init__(self, status, message): self.status = status; super().__init__(message)
class APIError(Exception):
    def __init__(self, status, message):
        self.status = status
        super().__init__(message)
try:
    raise APIError(404, 'Not found')
except APIError as e:
    print(e.status, e)

Exception-Hierarchie

Erstellen Sie eine Hierarchie: class DBError(AppError): pass – Aufrufer können AppError für jeden Anwendungsfehler oder gezielt DBError abfangen.
class AppError(Exception): pass
class DBError(AppError): pass
class NetworkError(AppError): pass
try:
    raise DBError('timeout')
except AppError as e:
    print('app error:', e)

Benutzerdefinierte __str__-Methode

Überschreiben Sie __str__, um zu steuern, wie die Exception-Meldung bei der Ausgabe aussieht.
class RangeError(ValueError):
    def __init__(self, val, lo, hi):
        self.val, self.lo, self.hi = val, lo, hi
    def __str__(self):
        return f'{self.val} not in [{self.lo}, {self.hi}]'
print(RangeError(15, 0, 10))

Benutzerdefinierte Exceptions auslösen

Verwenden Sie raise in Ihren Funktionen, um domänenspezifische Fehler zu signalisieren. Dadurch entsteht eine klare API für Aufrufer.
class InsufficientFundsError(Exception):
    def __init__(self, needed, available):
        super().__init__(f'Need {needed}, have {available}')
def withdraw(balance, amount):
    if amount > balance:
        raise InsufficientFundsError(amount, balance)
    return balance - amount
try:
    withdraw(100, 200)
except InsufficientFundsError as e:
    print(e)

Über die Basisklasse abfangen

except AppError fängt alle Unterklassen ab: DBError, NetworkError usw. Die Hierarchie ermöglicht es Aufrufern, den gewünschten Spezialisierungsgrad zu wählen.
class AppError(Exception): pass
class DBError(AppError): pass
try:
    raise DBError('conn failed')
except AppError:
    print('any app error')

Exception mit Kontextmanager

Benutzerdefinierte Exceptions lassen sich in Kontextmanager integrieren: class suppressed: __exit__ gibt True zurück, um die Exception zu unterdrücken.
class SuppressValue(Exception): pass
try:
    raise SuppressValue('ignored')
except SuppressValue:
    pass  # suppress silently
print('continued')

Benutzerdefinierte Exceptions dokumentieren

Dokumentieren Sie, WANN eine Exception ausgelöst werden soll und WAS die Attribute bedeuten. Gute Docstrings machen benutzerdefinierte Exceptions gut nutzbar.
class ConfigError(Exception):
    """Raised when configuration is invalid.
    Attributes:
        key: The invalid config key
    """
    def __init__(self, key, msg):
        super().__init__(msg)
        self.key = key

Bewährte Vorgehensweisen

Halten Sie die Hierarchie flach (2–3 Ebenen). Erben Sie immer von Exception. Verwenden Sie aussagekräftige Namen, die mit Error enden. Legen Sie die Exceptions in einem eigenen Modul exceptions.py ab.
# Good structure:
class AppError(Exception): pass
class ValidationError(AppError): pass
class NotFoundError(AppError): pass
print('hierarchy demo')

Schnellüberprüfung

Von welcher Klasse sollten benutzerdefinierte Exceptions erben, damit systembeendende Ereignisse nicht abgefangen werden?

Zusammenfassung

Benutzerdefinierte Exceptions: Erben Sie von Exception, fügen Sie Attribute in __init__ hinzu und überschreiben Sie __str__. Erstellen Sie Hierarchien, um gezieltes Abfangen zu ermöglichen. Legen Sie sie im Modul exceptions.py ab.

Weiter

Sehr gute Arbeit! Fahren Sie mit der nächsten Lektion fort, um weiter voranzukommen.

Häufig gestellte Fragen

Ist die Lektion „Benutzerdefinierte Ausnahmeklassen“ kostenlos?

Ja — der vollständige Text von „Benutzerdefinierte Ausnahmeklassen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Benutzerdefinierte Ausnahmeklassen“?

Definieren Sie eigene Ausnahmetypen für eine klarere Fehlerkommunikation. Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Python Academy zu starten?

Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Benutzerdefinierte Ausnahmeklassen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?

Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Ausnahmen verstehen
  2. try / except / else / finally
  3. Ausnahmen auslösen und erneut auslösen
  4. Benutzerdefinierte Ausnahmeklassen
← Zurück zu Python Academy