Seite 1 von 1

Exception Handling

Verfasst: Mittwoch 23. Mai 2012, 11:46
von mcdwerner
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!

Re: Exception Handling

Verfasst: Mittwoch 23. Mai 2012, 12:05
von 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


Re: Exception Handling

Verfasst: Mittwoch 23. Mai 2012, 12:09
von BlackJack
Und statt der 17 könnte man die entsprechende Konstante aus dem `errno`-Modul verwenden, damit es lesbarer und portabler ist.

Re: Exception Handling

Verfasst: Mittwoch 23. Mai 2012, 12:28
von mcdwerner
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)