Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich in Python effektiv Ausnahmen auslösen?

Wie kann ich in Python effektiv Ausnahmen auslösen?

Susan Sarandon
Freigeben: 2024-12-15 17:26:19
Original
320 Leute haben es durchsucht

How Do I Effectively Raise Exceptions in Python?

Auslösen von Ausnahmen in Python

In Python dienen Ausnahmen dazu, Fehler oder außergewöhnliche Bedingungen während der Programmausführung zu signalisieren. Um manuell eine Ausnahme auszulösen, wird die raise-Anweisung verwendet.

Manuelles Auslösen von Ausnahmen

Um eine Ausnahme auszulösen, verwenden Sie den Konstruktor für die spezifische Ausnahmeklasse, die Ihr Problem am besten beschreibt. Zum Beispiel:

raise ValueError('A very specific bad thing happened.')
Nach dem Login kopieren

Dadurch können Sie eine individuelle Fehlermeldung bereitstellen, die es einfacher macht, den Täter zu identifizieren.

Vermeidung von generischen Ausnahmen

Verzichten Sie auf die Angabe von generischen Fehlern Ausnahmen wie Exception. Diese werden schwieriger abzufangen, da Sie auch alle untergeordneten, spezifischeren Ausnahmen abfangen müssen.

Best Practices: Die raise-Anweisung

Verwenden Sie die raise-Anweisung mit dem spezifischsten Ausnahmekonstruktor, den es gibt passt zu deiner Situation. Sie können dem Konstruktor auch Argumente übergeben:

raise ValueError('A very specific bad thing happened', 'foo', 'bar', 'baz')
Nach dem Login kopieren

Diese Argumente können mit dem args-Attribut des Exception-Objekts abgerufen werden.

Best Practices: Die Except-Klausel

Bei der Behandlung von Ausnahmen möchten Sie möglicherweise bestimmte Fehler protokollieren und erneut auslösen. Behalten Sie den Stack-Trace bei, indem Sie eine Bare-Raise-Anweisung verwenden:

logger = logging.getLogger(__name__)

try:
    do_something_in_app_that_breaks_easily()
except AppError as error:
    logger.error(error)
    raise  # just this!
    # raise AppError  # Don't do this, you'll lose the stack trace!
Nach dem Login kopieren

Ändern von Fehlern: Vorsicht!

Während es möglich ist, Fehler mit sys.exc_info() zu ändern, bevorzugen Sie zum Beibehalten einen Bare-Raise der Stacktrace. Dies kann besonders problematisch sein, wenn Threading verwendet wird, da Sie möglicherweise den falschen Traceback erfassen.

Ausnahmeverkettung (nur Python 3)

In Python 3 können Sie Ausnahmen verketten, um Tracebacks beizubehalten:

raise RuntimeError('specific message') from error
Nach dem Login kopieren

Veraltete Methoden

Vermeiden Sie Folgendes, da sie Fehler oder Fehler stillschweigend erkennen und verbergen können sogar stillschweigend die falsche Ausnahme auslösen:

raise ValueError, 'message'  # Deprecated
raise 'message'  # Seriously wrong, don't do this
Nach dem Login kopieren

Beispielverwendung

Ein Beispiel für das Auslösen einer Ausnahme wegen falscher API-Nutzung:

def api_func(foo):
    '''foo should be either 'baz' or 'bar'. returns something very useful.'''
    if foo not in _ALLOWED_ARGS:
        raise ValueError('{foo} wrong, use "baz" or "bar"'.format(foo=repr(foo)))
Nach dem Login kopieren

Benutzerdefinierte Fehlertypen erstellen

Sie können benutzerdefinierte Fehlertypen definieren, um bestimmte anwendungsbezogene Fehler anzuzeigen:

class MyAppLookupError(LookupError):
    '''raise this when there's a lookup error for my app'''
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich in Python effektiv Ausnahmen auslösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage