Seite 1 von 1

Exceptions (richtig) auslösen

Verfasst: Freitag 11. Oktober 2002, 18:58
von hans
Nicht lacjen, aber wie löse ich eigentlich exeptions richtig aus? Unter Delphi sage ich einfach
raise exception.create('Dieser Fehler ist eine FataMorgana')
Aber wie sage ich's meiner Python?

Hans

Verfasst: Freitag 11. Oktober 2002, 19:07
von Dookie
Hi hans,

Code: Alles auswählen

raise 'Dieser Fehler ist eine FataMorgana'

Gruß

Fritz

Verfasst: Freitag 11. Oktober 2002, 19:29
von hans
aua!

war zu einfach :oops:

Hans

Verfasst: Mittwoch 23. Oktober 2002, 21:35
von hans
Kann das sein, das sich das raise Statement mit Version 2.2 geändert har? Neue Syntax:

Code: Alles auswählen

raise EExceptionClass, 'Message'
Ich habe mir mal pychecker installiert und drüberlaufen lassen. Eigentlich eine feine Sache, dass man den Sourcecode prüft, bevor der auf das System losgelassen wird.

Hans

Verfasst: Donnerstag 24. Oktober 2002, 00:03
von Dookie
Hi Hans,

wie auch in der Pythondoku zu lesen, sind beide schreibweisen möglich, mit der 2. kannst Du eben noch den Typ der Exception spezifizieren. Geht auch in der Version 2.1.

Code: Alles auswählen

>>> raise "Fehler!"
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
Fehler!
>>> raise TypeError, "Fehler!"
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: Fehler!
>>> 
wobei die 2. Version vorzuziehen ist, da sie mit einem try ... except Block abgefangen werden kann.

Gruß

Dookie

Verfasst: Donnerstag 24. Oktober 2002, 22:25
von hans
Hi Dookie

ja alles nicht so schlimm. Ich wollte nur darauf hinweisen. Hatte mich als Newbie irritiert, dass bei meinem Sourcecode auf einmal Warnungen (keine Fehler) hochkamen. Es dürfte aber wohl zu Fehlern kommen, wenn jemand die neue Form auf seiner alten Kiste anzuwenden versucht.

Was soll's, muß man halt immer dabeischreiben womit man entwickelt hat. Halt ich so oder so für sinnvoll. (Ich liebe Versionsnummern, weil die meisten Anwender das für Ballast halten).

Hans

Verfasst: Donnerstag 31. Oktober 2002, 12:05
von Milan
Du kannst auch Excepzions wie nach der ersten art abfangen, musst dann aber so vorgehen:

Code: Alles auswählen

>>> Fehler="Fehler"
>>> try:
        raise Fehler # der Fehler wird geworfen, kann aber auch von anderen Funktionen (etc.) ausgelöst werden. Soll nur verdeutlichen, dass dieser aufgetreten ist
    except Fehler:
        print "Alles unter Kontrolle"

>>> "Alles unter Kontrolle"
Der String, der als Fehler geworfen wird, muss im exceptblock mit Identität abgefangn werden. das geht gut, wenn man ihn vorher in ner Variablen speichert, quasi definiert.