[Python-de] Re: [Python-de] Versuch über die Ausnahmebedingung

Martin v. Löwis martin at v.loewis.de
Tue Dec 10 22:53:37 EST 2002


> DER AUFRUFENDE CODE MUSS WISSEN, WAS DER AUFGERUFENE
> CODE FÜR EXCEPTIONS WERFEN KANN,

Genau.

> egal wie tief dieser verschachtelt ist und
> was der seinerseits wieder für code anzieht.

Falsch. Jede Funktion sollte dokumentieren, welche Ausnahmen sie
*direkt* werfen kann. Wenn sie Funktionen ruft, die ihrerseits wieder
Ausnahmen werfen können, muss sie diese Ausnahmen auch dokumentieren
FALLS SIE ZUM NORMALEN BETRIEBSMODUS DER FUNKTION GEHÖREN (ich darf auch
schreien). Wenn eine Funktion eine andere ruft und deren Ausnahmen nicht
weiterreichen will, muss sie diese halt behandeln, indem die Ausnahmen
beispielsweise in andere umgesetzt werden. Ausnahmen, die nicht zum
normalen Betriebsmodus gehören (wie etwa AttributeError) sollte gar
keiner behandeln - es handelt sich schlicht um Programmfehler.

> Ich weiss nicht, sehr nach OOP
> klingt das für mich nicht. Für mich ist die Lösung "Fehlercode über
alles"
> immer noch anziehender.

Ausnahmen bieten Dir alles, was Du mit Fehlercodes auch bekommst, und
zusätzlich die Sicherheit, das Fehler, die im normalen Betrieb auftreten
können, nicht ignoriert werden.

> a) daß ich wissen muß, dass UND WELCHE Exceptions eine Funktion wirft

Wie unterscheidet sich das von Fehlercodes? Um zu wissen, ob eine
Funktion erfolgreich war, musst Du auch die Dokumentation der Funktion
lesen und verstehen, wie sie ihre Fehler mitteilt (Rückgabewert 0,
Rückgabewert != 0, Rückgabewert < 0, Ausgabeparameter, usw.)

> b) daß es nicht einfach ist, einzelne Funktionen "die Fehlschlagen
dürfen"
> mit Funktionen "die in der Richtigen Reihenfolge aufgerufen werden
müssen"
> zu mischen, wenn einem potentiell Exception Handling dazwischenfunkt.

Das Argument verstehe ich nicht. Welches Deiner Beispiele belegt es?

Ciao,
Martin





More information about the Python-de mailing list