In diesem Artikel werden die verschiedenen Techniken zur Behandlung von Ausnahmen in Python untersucht, einschließlich Try-Exception-Blöcken, benutzerdefinierten Ausnahmen und erweiterten Funktionen wie Ausnahmeverkettung und -anreicherung.
Python bietet ein robustes Ausnahmebehandlungs-Framework, das es Programmierern nicht nur ermöglicht, Code zu implementieren, der Abstürze verhindert, sondern auch Feedback bietet und die Anwendungsstabilität aufrechterhält. Darüber hinaus ermöglicht es Entwicklern, Fehler mithilfe von Konstrukten wie Try-Exception-Blöcken, benutzerdefinierten Ausnahmen und mehr elegant zu verwalten.
- Der Try-Except-Block
Im Try-Except-Block wird der Code, der eine Ausnahme auslösen kann, im Try-Block platziert, und der Except-Block gibt die Aktionen an, die ausgeführt werden sollen, wenn eine Ausnahme auftritt (Python Software Foundation, o. J.).
Zum Beispiel:
try: result = 1 / 0 except ZeroDivisionError: print("Cannot divide by zero.")
Um mehrere Ausnahmen in einem Try-Except-Block abzufangen, können wir einen Try-Block mit mehreren Except-Blöcken verwenden, um spezifische Antworten für jeden Ausnahmetyp zu generieren. Oder wir können ein Tupel verwenden, um mehrere Ausnahmen mit einem einzigen Ausnahmeausdruck abzufangen.
Zum Beispiel:
# One try block and several except blocks try: result = 1 / 'a' except ZeroDivisionError: print("Cannot divide by zero.") except TypeError: print("Type error occurred.") # One try block and one except tuple block try: # some operation result = 1 / 'a' except (ZeroDivisionError, TypeError) as e: print(f"Error occurred: {e}")
- Die Else-Klausel
Die else-Klausel wird nach den Try-Exception-Blöcken platziert und ausgeführt, wenn der Try-Block keine Ausnahme auslöst.
Zum Beispiel:
try: result = 1 / 2 except ZeroDivisionError: print(“Cannot divide by zero.”) else: print(“Division successful.”)
- Die Finalklausel
Die Final-Klausel wird immer nach dem Try-Block oder einem beliebigen Except-Block platziert. Es enthält Code, der auf jeden Fall ausgeführt wird, typischerweise zum Bereinigen von Ressourcen wie Dateien oder Netzwerkverbindungen, selbst wenn eine Ausnahme ausgelöst wurde.
Zum Beispiel:
try: result = 1 / ‘a’ except ZeroDivisionError: print(“Cannot divide by zero.”) except TypeError: print(“Type error occurred.”) else: print(“Division successful.”) finally: print(“Goodbye, world!”)
Auslösen von Ausnahmen: Die Raise-Klausel löst Ausnahmen aus, indem sie das Auftreten einer Ausnahme erzwingt, normalerweise um anzuzeigen, dass eine bestimmte Bedingung nicht erfüllt wurde.
Zum Beispiel:
if ‘a’ > 5: raise ValueError(“A must not exceed 5”)
- Ausnahmeverkettung
Sie können Ausnahmen mit der Klausel raise verketten. Dies ist nützlich, um Kontext zu einem ursprünglichen Fehler hinzuzufügen.
Zum Beispiel
try: open(‘myfile.txt’) except FileNotFoundError as e: raise RuntimeError(“Failed to open file”) from e
- Benutzerdefinierte Ausnahmen
Sie können Ihre eigenen Ausnahmeklassen definieren, indem Sie von der Ausnahmeklasse oder einer anderen integrierten Ausnahmeklasse erben (Mitchell, 2022).
Zum Beispiel:
class My_custom_ (Exception): pass try: raise MyCustomError(“An error occurred”) except MyCustomError as e: print(e)
- Bereichernde Ausnahmen
Sie können einer Ausnahme Informationen oder Kontext hinzufügen, indem Sie die Methode add_note() verwenden, um benutzerdefinierte Nachrichten oder Notizen an das Ausnahmeobjekt, auch bekannt als E, anzuhängen.
Zum Beispiel:
def divide_numbers(a, b): try: result = a / b except ZeroDivisionError as e: e.add_note(“Cannot divide by zero”) e.add_note(“Please provide a non-zero divisor”) raise try: num1 = 10 num2 = 0 divide_numbers(num1, num2) except ZeroDivisionError as e: print(“An error occurred:”) print(str(e))
Der Umgang mit Ausnahmen ist aus mehreren Gründen wichtig:
Ein einfaches Beispiel für die Behandlung von Programmfehlern:
try: result = 1 / 0 except ZeroDivisionError: print("Cannot divide by zero.")
# One try block and several except blocks try: result = 1 / 'a' except ZeroDivisionError: print("Cannot divide by zero.") except TypeError: print("Type error occurred.") # One try block and one except tuple block try: # some operation result = 1 / 'a' except (ZeroDivisionError, TypeError) as e: print(f"Error occurred: {e}")
Zusammenfassend lässt sich sagen, dass Python ein umfassendes Ausnahmebehandlungs-Framework bietet, das es Programmen ermöglicht, mit unerwarteten Situationen umzugehen, ohne abrupt auszufallen. Durch die Verwendung von Konstrukten wie Try-Exception-Blöcken, benutzerdefinierten Ausnahmen und erweiterten Funktionen wie Ausnahmeverkettung und -anreicherung können Entwickler sicherstellen, dass ihre Programme belastbar, benutzerfreundlich und in der Lage sind, unerwartete Szenarien reibungslos zu bewältigen.
Referenzen:
Mitchell R (2022, 13. Juni). Benutzerdefinierte Ausnahmen. _Python Essential Training _[VIDEO]. LinkedIn-Lernen. https://www.linkedin.com/learning/python-essential-training-14898805/custom-Exceptions?autoSkip=true&resume=false&u=2245842
Python Software Foundation. (o.J.). 8. Fehler und Ausnahmen. Python. python.org.
Ursprünglich veröffentlicht unter Exception Handling in Python – Medium am 21. August 2024.
Das obige ist der detaillierte Inhalt vonAusnahmebehandlung in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!