Dein letzter Login ist schon eine Weile her.

Bitte überprüfe, ob alle Angaben in Deinem Profil noch aktuell sind.


29.06.2019
von Jan-Dirk
in Gastbeiträge von IT-Talenten

Exception Handling in Python

x
Für Unternehmen:
IT-Nachwuchs kennenlernen!
Jetzt starten

Dieser Artikel ist der letzte von 4 Artikeln rund um die Programmiersprache Python. Falls das Thema noch neu für dich ist, schaue am besten bei Teil 3, Teil 2 oder Teil 1 vorbei.

Lesezeit: ca. 4 Min.

Bewerten

Themen auf dieser Seite:

IT-Talents.de ist Deine Plattform für Förderung und Weiterbildung während des IT-Studiums!
Fördermöglichkeiten ansehen


Der input-Befehl

Viele Computerprogramme erlauben eine Interaktion mit dem Anwender. Dazu dient der input-Befehl. Dessen Wert kannst du einer beliebigen Variablen zuweisen. Diese nimmt dann den Wert auf, den der Anwender eingegeben hat. Außerdem kannst du danach in einer Klammer eine Anweisung für die Eingabe anbringen. Wie das funktioniert, zeigt folgendes Programm:

name = input("Gib deinen Namen ein: ")
print("Hallo ", name, "!")

Die Ausgabe:

Dieses Programm fragt zunächst den Namen des Anwenders ab. Danach gibt es eine personalisierte Begrüßung aus, die diesen Namen enthält.

Im nächsten Beispiel wollen wir die Lieblingszahl des Anwenders abfragen und daraufhin deren doppelten Wert ausgeben. Daher formulieren wir das Programm so um, dass es nun diese Aufgabe erfüllt:

zahl = input("Gib deine Lieblingszahl ein: ")
print("Doppelter Wert deiner Lieblingszahl: ", zahl*2)

Anmerkung: Das Sternsymbol dient in Python (genau wie in allen anderen gebräuchlichen Programmiersprachen) als Operator für die Multiplikation. Der Ausdruck zahl*2 verdoppelt daher den in der Variablen zahl gespeicherten Wert.

Wenn wir das Programm ausführen und eine Zahl eingeben, erscheint jedoch nicht das erwartete Ergebnis:

Anstatt den Wert von 6 zu verdoppeln, gibt das Programm die Zahl 66 aus. Um zu verstehen, was hier passiert ist, solltest du dich nochmals an den zweiten Teil dieser Reihe erinnern. Darin wurde beschrieben, dass es verschiedene Datentypen gibt. Wenn der Nutzer eine Eingabe macht, dann handelt es sich dabei meistens um Text – so wie beispielsweise im vorherigen Beispiel. Daher speichert der input-Befehl alle Eingaben als Text ab. Dafür ist der Datentyp Zeichenkette (auch als String bezeichnet) erforderlich.

Wenn der Anwender nun eine Zahl eingibt, kann das Programm nicht wissen, dass es diese auch als Zahl interpretieren soll. Daher speichert es den Wert wie gewohnt als Zeichenkette ab. Das Sternsymbol hat jedoch eine eigene Funktionsweise, wenn man es auf Zeichenketten anwendet: Es gibt den Inhalt in der vorgegebenen Anzahl mehrmals hintereinander aus. Wenn man wie in diesem Beispiel eine Zeichenkette mit 2 multipliziert, gibt das Programm diese zwei Mal hintereinander aus. Aus 6 wird auf diese Weise 66.

Um dafür zu sorgen, dass das Programm die Eingabe wie eine Zahl interpretiert, musst du sie entsprechend umformen. Indem du dem input-Befehl den Ausdruck int voranstellst, wandelst du die Eingabe in eine Ganzzahl (Integer) um. Mit folgendem Code führt das Programm die gewünschte Aktion durch:

ahl = int(input("Gib deine Lieblingszahl ein: "))
print("Doppelter Wert deiner Lieblingszahl: ", zahl*2)

Die Ausgabe:


Was bedeutet Exception Handling?

Beim Lesen der vorherigen Abschnitte hast du dich vielleicht gefragt, was das alles mit Exception Handling zu tun hat. Die Antwort auf diese Frage lautet: nichts! Dennoch waren diese Ausführungen notwendig, um zu verstehen, wie das Programm Nutzereingaben verarbeitet.

Um den Bogen zum Exception Handling zu schlagen, führen wir das Programm, das wir soeben geschrieben haben, erneut aus. Dieses Mal geben wir jedoch nicht unsere Lieblingszahl ein, sondern einen Buchstaben. In der Praxis kommt ein derartiger Fehler immer wieder vor, da sich die Anwender gelegentlich vertippen. Was daraufhin passiert, siehst du im folgenden Screenshot:

Bei der entsprechenden Eingabe bricht der Interpreter das Programm ab und gibt eine Fehlermeldung aus. In diesem Fall spricht man von einem Laufzeitfehler. Dieser tritt auf, wenn der Anwender eine unerwartete Eingabe macht, die das Programm nicht verarbeiten kann.

Wenn ein Programm abgebrochen wird, ist das jedoch wenig nutzerfreundlich. Daher sollte das Ziel beim Programmieren stets darin bestehen, einen möglichst robusten Code zu erzeugen. Das bedeutet, dass er auch mit unerwarteten Eingaben umgehen kann.

Auf IT-Talents.de kannst Du Dich mit dem Who-is-Who der IT-Branche vernetzen!
Jetzt Top-Unternehmen anschauen


try

Um ein robustes Programm zu erstellen, kommt das Exception Handling – auf Deutsch auch als Ausnahmebehandlung bezeichnet – zum Einsatz. Damit es bei einem Laufzeitfehler nicht zu einem Abbruch kommt, müssen wir die entsprechende Stelle mit dem Begriff try kennzeichnen und einrücken:

try:
    zahl = int(input("Gib deine Lieblingszahl ein: "))
    print("Doppelter Wert deiner Lieblingszahl: ", zahl*2)

Das führt dazu, dass der Interpreter nur probiert, den entsprechenden Befehl auszuführen. Gibt es keine Probleme, läuft das Programm wie geplant ab. Tritt jedoch ein Fehler auf, führt das dennoch nicht zu einem Abbruch.

except

Ein try-Block darf jedoch niemals alleine stehen. Daran muss sich immer ein except-Block anschließen. Darin steht, was das Programm tun soll, wenn innerhalb des try-Blocks ein Fehler auftritt. Dieser Block wird mit dem Begriff except eingeleitet. Danach steht die Angabe, welche Art von Fehler du damit behandeln willst. Python kennt viele verschiedene Arten von Fehlern. Anhand dieser Angabe ist es möglich, auf jedes Problem individuell einzugehen.

Bei dem Laufzeitfehler, der bei unserem Programm aufgetreten ist, handelt es sich um einen ValueError. Das erkennst du an der Fehlermeldung, die das Programm ausgegeben hat. Darin war genau dieser Begriff angegeben. Daher muss die Einleitung für unseren except-Block so aussehen:

except ValueError:

Hier können wir nun beliebige Befehle einfügen. Sinnvoll ist es an dieser Stelle, einen Hinweis anzubringen, dass der Anwender eine Zahl eingeben soll. Das komplette Programm sieht dann so aus:

try:
    zahl = int(input("Gib deine Lieblingszahl ein: "))
    print("Doppelter Wert deiner Lieblingszahl: ", zahl*2)
except ValueError:
    print("Gib das nächste Mal bitte eine Zahl ein!")

Wenn man das Programm nun erneut ausführt und einen Buchstaben anstatt einer Zahl eingibt, kommt es nicht mehr zu einem Abbruch. Stattdessen gibt das Programm den entsprechenden Hinweis aus:


Wenn Du willst: IT-Talents.de ist Dein Headhunter! Unser Team macht sich für Dich auf die Suche nach dem passenden Arbeitgeber. Bequem und persönlich.
Jetzt JobScout anschauen


Weitere Ressourcen

Wir hoffen, dass dir diese Artikelreihe gefallen hat und dein Interesse an Python geweckt wurde.
Wie bereits im ersten Teil dieser Reihe erwähnt: Python lernen lohnt sich. Die Programmiersprache macht Spaß, ist vergleichsweise einfach zu lernen ( hier gibt es einen kleinen Programmiersprachen-Vergleich) und die Nachfrage nach Python-Entwicklern ist riesig groß und wächst stetig. Jetzt ist ein guter Zeitpunkt um zu starten.

Bei Edley anschauen

Dieses Tutorial basiert auf dem
Python Komplettkurs 2019
von Edley.

IT-Talents ist ein Netzwerk nur für IT'ler. Auf unserer Plattform kannst Du Dich als registriertes Mitglied mit wenigen Klicks auf die Jobs unserer Partnerunternehmen oder auf IT-Projekte für Studierende bewerben. Darüberhinaus führen wir Wettbewerbe durch und vergeben IT-Stipendien.

Jetzt Mitglied werden.

Schnell-Login für unsere Mitglieder

Tipp: Halte Dein Profil aktuell.

Lass' uns wissen, falls sich etwas Neues bei Dir ergibt.

Tipp: Vervollständige Dein Profil für noch bessere Karrierechancen.

Bist Du Schüler, Student oder bereits berufstätig? Teile uns Deinen aktuellen Status mit, damit wir Dir sinnvolle Aufgaben anbieten können.

Jetzt Status angeben

Wann stehst Du der IT-Branche zur Verfügung?

Bitte Monat und Jahr angeben.

{{ perspectiveForm.availableFrom.$error.dynamic }}

Neuer Versuch

Wo möchtest Du durchstarten?

{{ location.geolocation.name }}×
Bitte mindestens ein Ort angeben.

Als {{currentUser.status.title}} bist Du bereit für:


Lade Beschäftigungsarten

Bitte wähle den Zeitpunkt, Ort und min. eine Beschäftigungsart aus.

You have voted!
Schliessen
Vote for:
stars
Vote
You have not rated!