Website-Suche

Python-Ausnahmebehandlung


Einleitung

Python wird Sie darüber informieren, wenn Sie Ihre Syntax falsch verstanden haben. Es schlägt sofort fehl und das Programm kann nicht ausgeführt werden.

Was ist, wenn Ihr Code eine andere Art von Problem aufweist? Diese werden als Ausnahmen bezeichnet und sind in der Regel schwieriger zu erkennen. Es liegt an Ihnen, Situationen zu erkennen, in denen hey auftreten könnte, und sie abzufangen, um zu verhindern, dass Ihr Programm vollständig abstürzt.

Stellen Sie sich ein Szenario vor, in dem Sie Benutzereingaben benötigen. Möchten Sie, dass Ihr Programm jedes Mal abstürzt, wenn ein Benutzer etwas falsch eintippt oder etwas Falsches eingibt? Das ist alles andere als ideal. Da Sie wissen, dass es dort ein Problem geben könnte, können Sie Python sagen, dass es nach einem Ausschau halten und sich elegant erholen soll.

Versuchen und ausschließen

Wenn Sie wissen, dass die Möglichkeit besteht, dass eine Ausnahme auftritt, bitten Sie Python, den Codeabschnitt auszuprobieren und nach einer Ausnahme Ausschau zu halten. Schauen Sie es sich im Kontext des Zahlenbeispiels von vorhin an.


try:
	number = int(input("Enter any number: "))
except:
	print("That didn't work…")

Anstatt abzustürzen, wird das Programm fortgesetzt, auch wenn der Benutzer Müll eingibt.

Sie können Python auch genau mitteilen, nach welcher Art von Ausnahme gesucht werden soll. In diesem Fall wäre es ein ValueError.


try:
	number = int(input("Enter any number: "))
except ValueError:
	print("You didn't enter a number!")

Wenn Python weiß, nach welcher Art von Ausnahme es sucht, können Sie ihm sagen, wie es entsprechend reagieren soll.

Machen Sie Ihre eigenen

Sie können eigene Ausnahmen erstellen, indem Sie sie als Klassen schreiben, die von der Exception-Basisklasse oder einer der anderen Ausnahmeklassen erben.


class NewException(Exception):
	pass

Sie müssen in Ihr Programm einbauen, wie Sie Ihre benutzerdefinierten Ausnahmen verwenden.

Auslösen von Ausnahmen

Es gibt eine Option zum manuellen Auslösen von Ausnahmen mit raise.


try:
	raise NewException
except NewException:
	print("It failed as planned!")

Mehrere Ausnahmen

Wenn Sie davon ausgehen, dass es mehr als eine Ausnahme geben könnte, können Sie mit try mehrere einfügen. Beginnen Sie damit, einige benutzerdefinierte Ausnahmen vorzunehmen.


class ExceptionA(Exception):
	pass

class ExceptionB(Exception):
	pass

Verwenden Sie sie nun mit try.


try:
	raise ExceptionB
except (ExceptionA, ExceptionB):
	print("It was either A or B")

Das ist natürlich nicht das Beste, denn in einem realen Szenario wüssten Sie nicht, welche Ausnahme tatsächlich aufgetreten ist.

Versuchen Sie stattdessen, separate except-Klauseln zu verwenden.


try:
	raise ExceptionB
except ExceptionA:
	print("ExceptionA Occurred")
except ExceptionB:
	print("ExceptionB Occurred")
except:
	print("Something else happened…")

Die dritte Ausnahme dient dazu, jede andere Ausnahme abzufangen. Dies ist das Standardverhalten, wenn eine bestimmte Ausnahme nicht angegeben wird.

Sonst und endlich

Es gibt zwei zusätzliche Klauseln für die Behandlung dessen, was nach der Behandlung von Ausnahmen geschieht. Sie helfen Ihrem Code, auf Ausnahmen zu reagieren.

Mit der else-Klausel können Sie Code nur ausführen, wenn keine Ausnahme ausgelöst wurde.


try:
	number = int(input("Enter any number: "))
except ValueError:
	print("You didn't enter a number!")
else:
	print(number ** 2)

Sie möchten nur dann versuchen, eine Operation für die Nummer auszuführen, wenn eine solche eingegeben wurde.

Die finally-Ursache wird unabhängig von Ausnahmen ausgeführt. Er wird immer am Ende des try-Blocks ausgeführt.


try:
	number = int(input("Enter any number: "))
except ValueError:
	print("You didn't enter a number!")
else:
	print(number ** 2)
finally:
	print("This will always run.")

Abschließende Gedanken

Es ist wichtig zu verstehen, was bei Ihren Programmen schief gehen kann. Es ist genauso wichtig zu wissen, dass die Sache schief gehen wird. Durch die Berücksichtigung von Ausnahmen können Sie Ihren Code so stabil wie möglich gestalten und Ihre Benutzer nicht frustrieren.

Übungen

  1. Erstellen Sie Code, der eine nicht behandelte Ausnahme auslöst.
  2. Verwenden Sie einen try-Block, um diese Ausnahme zu behandeln.
  3. Erstellen einer benutzerdefinierten Ausnahmeklasse
  4. Lösen Sie diese benutzerdefinierte Ausnahme in einem try-Block aus.
  5. Erstellen Sie einen try-Block mit einem Codeabschnitt, der nur ausgeführt wird, wenn keine Ausnahme ausgelöst wird.

Verwandte Artikel: