Exception Handling

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.
Antworten
mcdwerner
User
Beiträge: 113
Registriert: Donnerstag 7. Juli 2011, 14:27

Hallo!

Was mache ich wenn mir das Exception-Handling "zu grob" ist?

Beispiel:

Code: Alles auswählen

try:
    os.symlink("mypath", "mylink")
except OSError:  #hier würde ich gerne nur einen bestimmten Fehler abfangen: Errno 17 File Exists
    "handle exception"
Kann ich das except-statement noch "feiner" angeben? (Hab schon nach "Errno" etc. gegoogelt aber leider nichts passendes gefunden.

Vielen Dank!
deets

Nein, die Exception-Hierarchie gibt das nicht her. Was du aber machen kannst ist

Code: Alles auswählen

try:
     ... # tu was
except IOError, e:
    if e.errno != 17: # keine Ahnung ob das errno ist, aber so ungefaehr
         raise # einfach weiterschmeissen
    # behandeln

BlackJack

Und statt der 17 könnte man die entsprechende Konstante aus dem `errno`-Modul verwenden, damit es lesbarer und portabler ist.
mcdwerner
User
Beiträge: 113
Registriert: Donnerstag 7. Juli 2011, 14:27

Danke Schön!

So kann ich mir den Fehler sogar ausgeben lassen und weitermachen:

Code: Alles auswählen


try:
    os.symlink("mypath", "mylink")
except OSError, e: 
    print os.strerror(e.errno)

Antworten