Merkst du nicht das Problem bei "mehr oder weniger"? Du weisst nämlich nicht, weche Exceptions du möglicherweise noch alles abfängst. Nur weil du sie bemerkst heißt es nicht, dass es eine ordentliche Behandlung ist. Den Fehler in ein Log zu schreiben ist nur dann eine vernünftige Lösung wenn man garantieren kann, dass der Zustands des Programms danach *immer* gültig ist. Dadurch, dass du einfach alle Fehler wegwirfst baust du unter Umständen ganz neue ein. Ich versuche es noch einmal mit einem komplexeren Beispiel:deadshox hat geschrieben:Nur das es mehr oder weniger abgefangen wurde.
Code: Alles auswählen
>>> def bubblesort(data):
... n = len(data)
... while True:
... switched = False
... for i in range(n-1):
... if data[i] > data[i+1]:
... try:
... data[i], data[i+1] = dataasdf[i+1], dataasd[i]
... switched = True
... except Exception, e:
... pass
... n = n - 1
... if not (n and switched):
... break
...
>>> def stupid_min(data):
... data = data[:]
... bubblesort(data)
... return data[0]
...
>>> import random
>>> data = range(10)
>>> random.shuffle(data)
>>> data
[9, 8, 1, 3, 2, 4, 6, 0, 7, 5]
>>> stupid_min(data)
9
Durch wildes Abfangen aller Fehler machst du dein Programm im Allgemeinen nicht fehlertoleranter, sondern baust noch mehr ein. Wenn es irgendwo im Programm unterwartet zu Problemen kommt, dann muss es krachen, da du über den Zustand des Programms keine Aussage mehr treffen kannst. Es funkioniert dann ggf. nur noch weil du Glück hattest und das ist ganz sicher kein Verhalten welches du dir wünscht.