Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

Exkurs - Fehlerbehandlung

Wenn man programmiert, funktioniert nicht immer alles sofort; das hast du sicher auch schon festgestellt.

Der folgende Programmausschnitt enthält einen kleinen Fehler, der vielleicht auch nicht direkt offensichtlich ist:

cursor = con.cursor()
SQLBefehl = 'SELECT Name, Einohner FROM kontinent'

cursor.execute(SQLBefehl)

row=cursor.fetchone()
while (row!=None):
  print(row[0], row[1])
  row = cursor.fetchone ()

Die Ausführung des Programms führt zu einer Fehlermeldung:

Programm mit Fehler im SQL-Befehl

Die rote Schrift zeigt schon an, dass das Programm direkt abgebrochen ist und in der letzten Zeile lässt sich auch der Grund ablesen: Beim Attribut "Einwohner" wurde im SQL-Befehl ein Buchstabe vergessen.

SQL-Fehler abfangen

Der MySQL-Connector verwendet die Ausnahmebehandlung (Exceptions) von Python, um Fehler an das aufrufende Programm zu melden. Dieses kann dann diese Fehler abfangen und behandeln. Ein einfaches Beispiel siehst du hier:

cursor = con.cursor()
SQLBefehl = 'SELECT Name, Einohner FROM kontinent'
try:
  cursor.execute(SQLBefehl)

  # Abrufen der Ergebnisse
  [...]

except mysql.connector.Error as err:
  print("Fehler bei der SQL-Ausführung: %s" % (err))

Die Ausführung des SQL-Befehls wird in einen eigenen try/except-Block gesetzt. Bei einem Fehler innerhalb des try-Blocks wird in den "passenden" except-Block gesprungen. Mit dem Befehl except mysql.connector.Error as err wird ganz konkret auf Fehler des MySQL-Connnectors eingegangen. Die konkrete Fehlermeldung ist im Objekt err ablesbar und wird hier direkt dem Benutzer über ein print angezeigt. Das Programm läuft danach bis zum Ende weiter.

Mittels except-Block abgefangener SQL-Fehler
X

Fehler melden

X

Suche