@Strawk: Das sagt man der Exception gar nicht. Eine Ausnahme prüft nichts, das musst Du selbst tun. Oder Du machst etwas ohne zu prüfen und das löst eine Ausnahme aus die Du behandeln kannst. Komplettes Beispiel um eine `TypeError`-Ausnahme auszulösen:
Komplettes Beispiel um eine `TypeError`-Ausnahme zu behandeln:
Code: Alles auswählen
try:
# irgendwas das einen TypeError auslösen kann
except TypeError as error:
# Hier *sinnvoll* (das ist *ganz* wichtig!) auf die Ausnahme reagieren
Der letzte Kommentar ist wirklich wichtig! Wenn man da nichts sinnvolles macht, dann sollte man es ganz bleiben lassen, denn das ist dann in dem Fall die sinnvollere Alternative.
Statt mit einer Suchmaschine solche Grundlagen zu suchen, macht es vielleicht mehr Sinn ein zusammenhängendes Tutorial für die Grundlagen zu verwenden. In der Python-Dokumentation befindet sich eins. Das hat auch ein Kapitel zu Ausnahmen und Ausnahmebehandlung.
Falls das eine Hausaufgabe ist, wird eventuell tatsächlich verlangt, das Du auf ganze Zahlen und Listen testest. Das verhindert allerdings, dass man auch andere addierbare Typen und Sequenzen verwendet. Eine generischere Lösung würde einfach versuchen die Objekte als iterier- und addierbar zu behandeln und entsprechend auf Ausnahmen reagieren. Also zum Beispiel die Iteration versuchen, und wenn das nicht geht, das Objekt als addierbar behandeln. Solltest Du auf Typen testen müssen, brauchst Du noch `isinstance()`. Oder `functools.singledispatch()` oder den Backport davon für Python 2.
