329 Stimmen

Wie man das Schlüsselwort "raise" in Python verwendet

Ich habe die offizielle Definition von "Anhebung" gelesen, aber ich verstehe immer noch nicht ganz, was damit gemeint ist.

Was ist, ganz einfach ausgedrückt, eine "Erhöhung"?

Ein Anwendungsbeispiel wäre hilfreich.

406voto

Ignacio Vazquez-Abrams Punkte 735200

Sie hat zwei Ziele.

jackcogdill hat den ersten Beitrag geliefert:

Er wird verwendet, um eigene Fehler zu beheben.

if something:
   raise Exception('My error!')

Die zweite Möglichkeit ist die Erhöhung der aktuell Ausnahme in einem Ausnahmebehandlungsprogramm, so dass sie weiter oben auf dem Aufrufstapel behandelt werden kann.

try:
  generate_exception()
except SomeException as e:
  if not can_handle(e):
    raise
  handle_exception(e)

51voto

jackcogdill Punkte 4633

Er wird für die Meldung von Fehlern verwendet.

if something:
    raise Exception('My error!')

Einige Beispiele aquí

24voto

Stan Prokop Punkte 4853

Neben raise Exception("message") y raise Mit Python 3 wurde ein neues Formular eingeführt, raise Exception("message") from e . Dies wird als Ausnahmeverkettung bezeichnet und ermöglicht es Ihnen, die ursprüngliche Ausnahme (die Grundursache) mit ihrem Traceback zu erhalten.

Es ist den inneren Ausnahmen von C# sehr ähnlich.

Mehr Informationen: https://www.python.org/dev/peps/pep-3134/

18voto

sampson-chen Punkte 44751

Sie können es verwenden, um Fehler im Rahmen der Fehlerprüfung zu melden:

if (a < b):
    raise ValueError()

Oder einige Fehler zu behandeln und sie dann als Teil der Fehlerbehandlung weiterzugeben:

try:
    f = open('file.txt', 'r')
except IOError:
    # do some processing here
    # and then pass the error on
    raise

13voto

Martijn Pieters Punkte 953257

raise löst eine Ausnahme aus. Einige andere Sprachen verwenden stattdessen das Verb "werfen".

Es soll eine Fehlersituation signalisieren; es zeigt an, dass die Situation vom normalen Ablauf abweicht.

Ausgelöste Ausnahmen können durch 'vorgelagerten' Code (einen umgebenden Block oder eine Funktion weiter oben auf dem Stapel) wieder abgefangen werden, um sie zu behandeln, indem eine try , except Kombination.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X