Python-Syntaxfehler und -Ausnahmen behandeln

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Willkommen im Python Syntax Errors and Exceptions Lab! In diesem Lab lernst du, wie du Syntaxfehler in deinem Python-Code identifizierst und behebst, sowie wie du Ausnahmen behandelst, die während der Ausführung deines Codes auftreten können.

Errungenschaften

  • Syntaxfehler
  • Ausnahmen

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/ErrorandExceptionHandlingGroup(["Error and Exception Handling"]) python/BasicConceptsGroup -.-> python/python_shell("Python Shell") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/for_loops("For Loops") python/ErrorandExceptionHandlingGroup -.-> python/catching_exceptions("Catching Exceptions") python/ErrorandExceptionHandlingGroup -.-> python/raising_exceptions("Raising Exceptions") python/ErrorandExceptionHandlingGroup -.-> python/finally_block("Finally Block") subgraph Lab Skills python/python_shell -.-> lab-80{{"Python-Syntaxfehler und -Ausnahmen behandeln"}} python/conditional_statements -.-> lab-80{{"Python-Syntaxfehler und -Ausnahmen behandeln"}} python/for_loops -.-> lab-80{{"Python-Syntaxfehler und -Ausnahmen behandeln"}} python/catching_exceptions -.-> lab-80{{"Python-Syntaxfehler und -Ausnahmen behandeln"}} python/raising_exceptions -.-> lab-80{{"Python-Syntaxfehler und -Ausnahmen behandeln"}} python/finally_block -.-> lab-80{{"Python-Syntaxfehler und -Ausnahmen behandeln"}} end

Das Verständnis von Syntaxfehlern

Ein Syntaxfehler tritt auf, wenn der Python-Interpreter die Struktur Ihres Codes nicht verstehen kann. Dies kann auf eine Vielzahl von Problemen beruhen, wie fehlende Klammern oder falsche Einrückungen.

Öffnen Sie einen neuen Python-Interpreter.

python3

Hier ist ein Beispiel für einen Syntaxfehler, der durch ein fehlendes Doppelpunkt am Ende einer for-Schleife verursacht wird:

for i in range(10)
  print(i)

Der Interpreter wird einen Syntaxfehler ausgeben und uns mitteilen, wo der Fehler aufgetreten ist:

Datei "<stdin>", Zeile 1
    for i in range(10)
                      ^
SyntaxError: ungültige Syntax

Das Karret-Symbol (^) gibt die位置 des Syntaxfehlers an, und die Fehlermeldung teilt uns mit, dass die Syntax ungültig ist.

Um diesen Syntaxfehler zu beheben, müssen wir einfach den Doppelpunkt am Ende der for-Schleife hinzufügen:

for i in range(10):
  print(i)

Nun probieren wir ein Beispiel mit falscher Einrückung:

if True:
print("Hello, World!")

In diesem Beispiel ist der print-Befehl nicht richtig eingerückt unter der if-Anweisung. Um diesen Syntaxfehler zu beheben, müssen wir den print-Befehl richtig einrücken:

if True:
  print("Hello, World!")

Ausnahmen behandeln

Eine Ausnahme ist ein Fehler, der während der Ausführung eines Programms auftritt. In Python können wir Ausnahmen mit den try- und except-Anweisungen behandeln.

Hier ist ein Beispiel dafür, wie eine ZeroDivisionError-Ausnahme behandelt wird:

try:
  x = 10 / 0
except ZeroDivisionError:
  print("Cannot divide by zero!")

In diesem Beispiel enthält der try-Block Code, der eine ZeroDivisionError-Ausnahme auslösen kann. Wenn die Ausnahme ausgelöst wird, wird die Steuerung an den except-Block übergeben, der die Ausnahme behandelt, indem eine Fehlermeldung ausgegeben wird.

Wir können auch mehrere Ausnahmen in demselben try-Block behandeln, indem wir die except-Anweisung mit mehreren Ausnahmen verwenden:

try:
  x = 10 / 0
  y = int('abc')
except ZeroDivisionError:
  print("Cannot divide by zero!")
except ValueError:
  print("Invalid input!")

In diesem Beispiel enthält der try-Block Code, der eine ZeroDivisionError oder eine ValueError auslösen kann. Wenn eine ZeroDivisionError ausgelöst wird, wird der except-Block mit der ZeroDivisionError sie behandeln. Wenn eine ValueError ausgelöst wird, wird der except-Block mit der ValueError sie behandeln.

Ausnahmen auslösen

Neben der Behandlung von Ausnahmen können wir auch in unserem Code Ausnahmen mit der raise-Anweisung auslösen.

Hier ist ein Beispiel dafür, wie eine ValueError-Ausnahme ausgelöst wird:

def validate_age(age):
  if age < 0:
    raise ValueError("Age cannot be negative.")

try:
  validate_age(-1)
except ValueError as e:
  print(e)

In diesem Beispiel löst die validate_age-Funktion eine ValueError-Ausnahme aus, wenn das Alter negativ ist. Der try-Block ruft die validate_age-Funktion mit einem negativen Alter auf, was die ValueError-Ausnahme auslöst. Der except-Block behandelt die Ausnahme und druckt die Fehlermeldung aus.

Alle Ausnahmen fangen

Manchmal möchten wir alle Ausnahmen fangen, die in einem try-Block auftreten können. Wir können dies tun, indem wir die except-Anweisung ohne angegebene Ausnahme verwenden:

try:
  x = 10 / 0
  y = int('abc')
except:
  print("An error occurred!")

In diesem Beispiel enthält der try-Block Code, der eine ZeroDivisionError oder eine ValueError auslösen kann. Wenn eine der beiden Ausnahmen ausgelöst wird, wird sie vom except-Block gefangen, der eine Fehlermeldung ausgibt.

Der else-Zweig

Wir können den else-Zweig in einer try-Anweisung verwenden, um einen Codeblock anzugeben, der nur ausgeführt werden soll, wenn keine Ausnahmen im try-Block ausgelöst werden:

try:
  x = int(input("Enter a number: "))
except ValueError:
  print("Invalid input!")
else:
  print("The number is", x)

In diesem Beispiel enthält der try-Block Code, der eine ValueError auslösen kann, wenn der Benutzer einen ungültigen Wert eingibt. Wenn keine Ausnahmen ausgelöst werden, wird der else-Block ausgeführt und die Zahl gedruckt.

Der finally-Zweig

Wir können den finally-Zweig in einer try-Anweisung verwenden, um einen Codeblock anzugeben, der immer ausgeführt werden soll, unabhängig davon, ob eine Ausnahme ausgelöst wird oder nicht:

try:
  x = int(input("Enter a number: "))
except ValueError:
  print("Invalid input!")
finally:
  print("Exiting program.")

In diesem Beispiel enthält der try-Block Code, der eine ValueError auslösen kann, wenn der Benutzer einen ungültigen Wert eingibt. Unabhängig davon, ob eine Ausnahme ausgelöst wird oder nicht, wird der finally-Block immer ausgeführt und das Programm beendet.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie syntaktische Fehler in Ihrem Python-Code identifizieren und beheben, sowie wie Sie Ausnahmen mit den try- und except-Anweisungen behandeln. Sie haben auch gelernt, wie Sie in Ihrem Code Ausnahmen mit der raise-Anweisung auslösen und wie Sie die else- und finally-Klauseln in einer try-Anweisung verwenden.

Ich hoffe, dass dieses Lab hilfreich war und dass Sie sich bei der Arbeit mit Python-Syntaxfehlern und -Ausnahmen sicherer fühlen!