Seite 1 von 1

Ausnahmebehandlung

Verfasst: Freitag 24. Mai 2013, 22:44
von Dami123
Hab ein gutes und leicht verständliches Tut zur Ausnahmebehandlung gefunden.
http://www.python-kurs.eu/ausnahmebehandlung.php

Re: Ausnahmebehandlung

Verfasst: Samstag 25. Mai 2013, 01:04
von Hyperion
Dieser Kurs im allgemeinen ist an vielen Stellen ziemlich mies (ich meine mich auch hier an den OOP-Teil zu erinnern)!

Ich hab es nur mal überflogen... auf die schnelle:
- *niemals* einfach nur ``except`` ohne konkreten Exception-Typen verwenden
- das Beispiel für ``else`` anhand des Dateihandlings ist imho mindestens deprecated. Dafür gibt es mittlerweile (seit 2.5 iirc) das ``with`` Schlüsselwort im Zusammenspiel mit der Context Manager API.

Typos kann ich ja gerade noch verschmerzen, auch wenn man daran sieht, dass offensichtlich nicht mit letzter Konsequenz daran gearbeitet worden ist.

Generell ist es mir nicht wirklich didaktisch hilfreich für Anfänger aufgebaut. Das pure Aufrufen von ``print``-Statements in einem ``except``-Block kommt in der Praxis selten vor und verdeckt den wahren Nutzen von Exceptions, nämlich die *Behandlung* selbiger. Auch ohne ``print`` steht auf dem Schirm, dass etwas schief gelaufen ist und darüber hinaus noch, was genau...

Ich würde das Ding nicht wirklich empfehlen - es steht eigentlich nix drin, was nicht im offiziellen Tutorial auch schon steht.

Re: Ausnahmebehandlung

Verfasst: Samstag 25. Mai 2013, 01:16
von Dami123
Da hast du wohl Recht. Kann es selber schlecht vergleichen, da ich noch keine größeren Programme geschrieben hab, die jeden Fehler auffangen müssen.
Hab es auch gleich zu spüren bekommen, als ich

Code: Alles auswählen

except:
    print "Unexpected error:", sys.exc_info()[0]
eingebaut hab.
Die im meinen Fall magere Ausgabe "NameError" ist natürlich nichts im vergleich zur normalen Fehlerausgabe mit viel mehr Infos.

Wenn du ggf. ein Tut zu dem Thema gespeichert hast, würde es mir weiterhelfen.

Re: Ausnahmebehandlung

Verfasst: Samstag 25. Mai 2013, 09:32
von Hyperion
Schau Dir auf jeden Fall das offizielle Tutorial an - imho ist fehlt es da auch an besserer Erklärung der Intention von Exception Handling, aber zumindest steht dort die originale Vorlage zu oben genannten Tutorial.

Evtl guckst Du mal, ob "Learn Python the hard way" oder ein anderes hier oft empfohlenes Tutorial so etwas bietet.

Re: Ausnahmebehandlung

Verfasst: Sonntag 26. Mai 2013, 05:07
von Dami123
Werde mal in paar Python Büchern nachschauen. Hab aber nun verstanden, dass Error Handling nicht für jedes auftretende Problem verwendet werden soll, sondern nur wenn es benötigt wird.
Sonst ist der Output von den Editoren sehr gut brauchbar.

Re: Ausnahmebehandlung

Verfasst: Sonntag 26. Mai 2013, 08:43
von Sirius3
@Dami123: Fehlerbehandlung ist immer dann sinnvoll, wenn Du den Fehler auch wirklich behandeln kannst, so dass er auf den weiteren Verlauf des Programms keinen Einfluß mehr hat. Zum Beispiel nutzt es nichts, den Fehler, dass eine Datei nicht richtig gelesen werden kann, zu behandeln, wenn das Programm auf den Inhalt angewiesen ist und ohne nicht sinnvoll arbeiten kann.
Zum Behandeln eines Fehlers ist es natürlich wichtig, im voraus genau zu wissen, wo welcher Fehler genau auftreten kann. Im Zweifel sollte man eher weniger Behandeln als zu viel; man muß sich schon ziemlich sicher sein, dass die Funktion alle normalen Zustände richtig abarbeitet, bevor man sich an die Behandlung der Ausnahmen macht, weil sonst kann es passieren, dass man nicht Bedien- sondern Programmierfehler behandelt, und Du hast dann keine Chance mehr, diese Fehler zu finden.

Re: Ausnahmebehandlung

Verfasst: Montag 27. Mai 2013, 19:16
von Dami123
Ja, jeden Fehler aufzufangen macht natürlich wenig Sinn, vor allem beim debuggen nicht.
Ggf. für den Endbenutzer eines Programms wäre es sinnvoll einige Fehler zu übersetzen und auszugeben.