Spezielle Fehler abfangen...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Spezielle Fehler abfangen...

Beitragvon jens » Dienstag 4. Oktober 2005, 08:27

Erstmal Code:

Code: Alles auswählen

class test1:
    pass

class test2:
    def __init__(self):
        pass

def make_class_instance(module_class):
    try:
        module_class("Blödes Beispiel")
    except TypeError,e:
        if str(e) == "this constructor takes no arguments":
            print "Fehler, __init__(txt) existiert nicht:", e
        elif str(e).startswith("__init__"):
            print "Fehler in Argumentübergabe:", e
        else:
            print "Fehler in Modul-Klasse:", e


print 1,"-"*50
make_class_instance(test1)
print 2,"-"*50
make_class_instance(test2)
print 3,"-"*50
make_class_instance("noch ein Fehler")


Die Ausgaben:
1 --------------------------------------------------
Fehler, __init__(txt) existiert nicht: this constructor takes no arguments
2 --------------------------------------------------
Fehler in Argumentübergabe: __init__() takes exactly 1 argument (2 given)
3 --------------------------------------------------
Fehler in Modul-Klasse: 'str' object is not callable


Ist str(e) == "this constructor takes no arguments" und str(e).startswith("__init__") irgendwie einfacher/sinnvoller abzufragen???

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Dienstag 4. Oktober 2005, 12:35

Hoi Jens,

jau, Deine Idee finde ich eigentlich ganz gut. U. U. muß man halt an ein konkretes Beispiel anpassen. Was man in einem größeren Projekt auch machen könnte / sollte ist auch eigene Ausnahmen (Exceptions) zu definieren. Aber wenn ich Dir das erzähle ist das wohl Eulen nach Athen tragen ....

Gruß,
Christian
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Dienstag 4. Oktober 2005, 15:47

Selbst Exceptions definieren habe ich bisher sehr selten gemacht. Allerdings war es in meinem ModulManager sehr hilfreich ;)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder