Moegliche exceptions von Methoden herausfinden

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
behe0815
User
Beiträge: 4
Registriert: Mittwoch 27. September 2006, 11:59

Hi,

wie kann ich herausfinden, welche exceptions von einer Methode erzeugt werden koennen, z.B. dircache.listdir()

http://www.python.org/doc/1.5.2p2/lib/m ... cache.html

Mit einem einfachen "except:" kann ich natuerlich alle abfangen, aber im Python tutorial steht, dass man's so besser nicht macht:
The last except clause may omit the exception name(s), to serve as a wildcard. Use this with extreme caution, since it is easy to mask a real programming error in this way! It can also be used to print an error message and then re-raise the exception (allowing a caller to handle the exception as well).
Konkret sieht's so aus:

Code: Alles auswählen

		try:
			directory_listing = dircache.listdir(directory)
		except:
			print 'Could not open directory', directory
			return
String "directory" koennte aber auch ein Dateiname sein, wenn der Benutzer eine falsche Eingabe macht. Dann schlaegt listdir() fehl und wirft eine exception. Oder kann man bei Methoden der Systembibliotheken ohne weiteres "except:" benutzen, da diese als "stable" angesehen werden koennen?

Benoetige Erleuchtung. :)

Behe0815
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hi Behe0815!

Ich persönlich, provoziere die Fehler die ich abfangen möchte, und schau mir dann die Fehlermeldung an. Da steht dann auch drinnen, welcher Fehler ausgelöst wurde.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
behe0815
User
Beiträge: 4
Registriert: Mittwoch 27. September 2006, 11:59

Hallo Gerold, danke fuer den Tipp.

Es wird ein "WindowsError" geworfen. Naja, der Plattformunabhaengigkeit zuliebe fange ich "OSError" ab und gut ist. :D

--
Behe0815
Antworten