Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:modul:m320_2024:learningunits:lu05:fangen [2026/08/30 14:05] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | de:modul:m320_2024:learningunits:lu05:fangen [2026/08/30 14:06] (aktuell) – ↷ Links angepasst, weil Seiten im Wiki verschoben wurden msuter | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== LU05b - Exception fangen ====== | ||
| + | |||
| + | In der ersten Übung wurde aufgezeigt, dass der Umgang mit Laufzeitfehlern - wie z.B. der Dision durch 0 - durch das Exception-Handling geregelt werden kann. | ||
| + | |||
| + | {{modul: | ||
| + | //Abb: Die " | ||
| + | |||
| + | Damit ein Programm geordnet auf eine Ausnahme (Exception) reagieren kann, braucht es ein entsprechendes Konstrukt. | ||
| + | Dies wird bei Python durch | ||
| + | <code python> | ||
| + | try: | ||
| + | # hier folgt der kritische Code, der potentielle Fehlersituationen haben kann. | ||
| + | # typischerweise im Zusammenhang mit Benutzereingaben. | ||
| + | except: | ||
| + | # hier folgt die Behandlung des Fehlers | ||
| + | else: | ||
| + | # hier folgt Code, der nur dann ausgeführt wird, wenn es keine Exception gibt | ||
| + | finally: | ||
| + | # hier folgt Code der sowohl als auch ausgeführt wird. | ||
| + | </ | ||
| + | sichergestellt. | ||
| + | Bildlich dargestellt sieht der Sachverhalt wie folgt aus:\\ | ||
| + | {{modul: | ||
| + | //Abb: try-except Klausel// | ||
| + | |||
| + | Können in einem Codeabschnitt mehrere potentielle Exceptions auftreten, so können diese gezielt herausgepickt werden. Dazu wird der '' | ||
| + | |||
| + | ==== Beispiel: Ein einfache Berechnung ==== | ||
| + | <code python> | ||
| + | if __name__ == ' | ||
| + | |||
| + | try: | ||
| + | x = float(input(' | ||
| + | inverse = 1.0 / x | ||
| + | except ValueError: | ||
| + | print(' | ||
| + | except ZeroDivisionError: | ||
| + | print(' | ||
| + | else: | ||
| + | print(' | ||
| + | finally: | ||
| + | print(' | ||
| + | </ | ||
| + | ----- | ||
| + | |||
| + | Falls der Benutzer in diesem Beispiel einen Buchstaben eingibt (z.B. '' | ||
| + | resultiert ein '' | ||
| + | |||
| + | Wird '' | ||
| + | |||
| + | |||
| + | <WRAP center round tip 60%> | ||
| + | Probieren Sie das Verhalten des Codes im Trinket aus. | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | <iframe src=" | ||
| + | </ | ||
| + | |||
| + | ==== Fehlerfälle ==== | ||
| + | |||
| + | Welche Fehlerfälle von der jeweiligen Programmiersprache unterstützt werden, ist der Sprachdokumentation zu entnehmen. | ||
| + | Typische Problemfälle sind | ||
| + | * I/ | ||
| + | * Indexfehler bei Array, Listen usw. | ||
| + | * Arithmetische Fehler (z.B. Division mit 0) | ||
| + | * Fehler bei Datentypen und Formaten (sofern eine Typenprüfung stattfindet) | ||
| + | * Speicherfehler | ||
| + | * ... | ||
| + | |||
| + | Was aber passiert bei Situationen, | ||
| + | Das wird uns im nächsten Kapitel beschäftigen. | ||
| + | |||
| + | ---- | ||
| + | {{tag> | ||
| + | [[https:// | ||