try…except
den Fehler auffangen und behandeln.In der Applikation können eine Anzahl Noten erfasst und ausgelesen werden. Bisher wurde aber noch keine Fehlerbehandlung realisiert. Zum Beispiel stürzt das Programm ab, wenn man eine undefinierte Noten lesen will (falscher Index). Ungültige Noten werden entgegengenommen und wenn zu viele Noten erfasst werden, passiert auch nichts.
Für eine gezielte Fehlerbehandlung definieren wir daher 3 eigene Exceptions:
Prüfen Sie in der Methode take_grade(self, index)
ob der Index auf ein gültiges Listenelement zeigt.
Beachten Sie, dass die maximale Grösse - durch self._MAX_GRADE_COUNT = 5
festgelegt - nicht dem Index der erfassten Noten entspricht!
ListIndexException
in der Datei exceptions.py
. take_grade()
so an, dass bei einem ungültigen Index eine ListIndexException
erzeugt wird. take_grade()
mit den Testfällen test_list_index_ok
und test_list_index_exception
.
Prüfen Sie in der Methode add_grade(self, grade)
ob der Wert einer gültigen Note (1.0 … 6.0) entspricht und ob nicht zuviele Noten zugefügt werden.
Die Grösse der Liste wird - wie oben erwähnt - durch self._MAX_GRADE_COUNT
festgelegt.
ListRangeException
und ValueRangeException
in der Datei exceptions.py
. ListRangeException
lautet : „Fehler: Zu viele Werte eingegeben“. ValueRangeException
lautet: „Fehler: Der Notenwert muss im Bereich 1.0 bis 6.0 liegen. Er beträgt jedoch …“, wobei … für den aktuellen Notenwert steht.add_grade()
so an, dass bei einem falschen Notenwert die Exception ValueRangeException
und bei zu vielen zugefügten Werten ListRangeException
erzeugt werden.add_grade()
mit den Testfällen test_value_range_ok
, test_value_range_low
, test_value_range_high
und test_number_too_large
.
In der Methode main()
müssen die Exception verarbeitet werden.
Überall wo die Methode add_grade()
bzw. take_grade()
aufgerufen werden, müssen Sie dies in einem try
/ except
-Block machen.
Innerhalb eines try
-Blocks wird die Programmausführung unterbrochen, sobald eine Exception auftritt, d.h. dass der nachfolgende Code im Block nicht ausgeführt wird.
Damit in unserem Fall das Programm weiter läuft, schützen Sie bitte nur die kritischen Bereiche explizit mit try-except
(Also nur den einen Aufruf der Methoden add_grade(…)
bzw- take_garde(…)
).
Falls eine Exception auftritt, wird die Standardmeldung der Exception ausgegeben.
45 Minuten
Mittels Push auf GitHub.
GitHub Repository https://github.com/templates-python/m320-lu05-a03-raise
Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden