Warum ist es eine schlechte Idee, alle Ausnahmen in Python zu erfassen?
Ich verstehe, dass das Abfangen aller Ausnahmen mit der except:
-Klausel sogar die 'speziellen' Python-Ausnahmen erfasst: SystemExit
, KeyboardInterrupt
und GeneratorExit
. Warum also nicht einfach eine except Exception:
-Klausel verwenden, um alle Ausnahmen zu erfassen?
Weil es furchtbar unspezifisch ist und es Ihnen nicht ermöglicht, mit Ausnahme etwas Interessantes zu tun. Außerdem, wenn Sie jede Ausnahme abfangen, könnte es viele Ausnahmen geben, die passieren, von denen Sie nicht einmal wissen, dass sie passieren (was dazu führen könnte, dass Ihre Anwendung fehlschlägt, ohne dass Sie wirklich wissen, warum). Sie sollten vorhersagen können (entweder durch das Lesen von Dokumentationen oder durch Experimente), speziell welche Ausnahmen Sie behandeln müssen und wie Sie damit umgehen sollen, aber wenn Sie blind alle von Anfang an unterdrücken, werden Sie es nie erfahren.
Also, auf vielfachen Wunsch, hier ist ein Beispiel. Ein Programmierer schreibt Python-Code und sie bekommt IOError
. Anstatt weiter zu untersuchen, beschließt sie, alle Ausnahmen zu erfassen:
Sie bemerkt das Problem nicht auf seine Art: Was ist, wenn die Datei existiert und zugänglich ist, aber sie ist leer? Dann erhöht dieser Code IndexError
(da die Liste lines
leer ist). Also wird sie Stunden damit verbringen, sich zu fragen, warum sie None
von dieser Funktion zurückbekommt, wenn die Datei existiert und nicht gesperrt ist, ohne etwas zu erkennen, das offensichtlich wäre, wenn sie Fehler genauer erkannt hätte, nämlich dass sie auf Daten zugreift möglicherweise nicht vorhanden.
Tags und Links python exception-handling exception