Sorry für den langen Titel, aber es scheint am beschreibendsten für meine Frage.Wie kann ich eine Liste aller Ausnahmen finden, die eine gegebene Bibliotheksfunktion in Python auslöst?
Grundsätzlich habe ich eine schwierige Zeit finden Ausnahmeinformationen in der offiziellen Python-Dokumentation. Zum Beispiel in einem Programm bin ich zur Zeit schreibe, bin ich mit dem Move-Funktion des shutil libary:
from shutil import move
move('somefile.txt', '/tmp/somefile.txt')
Das funktioniert gut, solange ich den Schreibzugriff auf/tmp haben /, gibt es genug Speicherplatz, und wenn alle anderen Anforderungen erfüllt sind.
Wenn jedoch generische Code zu schreiben, ist es oft schwierig, diese Faktoren zu gewährleisten, so dass man in der Regel verwendet Ausnahmen:
from shutil import move
try:
move('somefile.txt', '/tmp/somefile.txt')
except:
print 'Move failed for some reason.'
Ich möchte eigentlich die entsprechenden Ausnahmen, anstatt nur zu kontrollieren alles geworfen fangen, aber ich kann einfach keine Liste von Ausnahmen für die meisten Python-Module gefunden finden. Gibt es eine Möglichkeit für mich zu sehen, welche Ausnahmen eine bestimmte Funktion auslösen kann und warum? Auf diese Weise kann ich für jede Ausnahme geeignete Fälle machen, zum Beispiel:
from shutil import move
try:
move('somefile.txt', '/tmp/somefile.txt')
except PermissionDenied:
print 'No permission.'
except DestinationDoesNotExist:
print "/tmp/ doesn't exist"
except NoDiskSpace:
print 'No diskspace available.'
Antwort Punkte gehen an jeden mich entweder zu einem gewissen relevanten Unterlagen verknüpfen kann, dass ich irgendwie in den offiziellen Dokumenten übersehen habe, oder bieten eine todsichere Möglichkeit, genau herauszufinden, welche Ausnahmen von welchen Funktionen ausgelöst werden und warum.
Danke!
UPDATE: Es scheint aus den gegebenen Antworten, dass es wirklich keine 100% geradlinige Möglichkeit gibt herauszufinden, welche Fehler von bestimmten Funktionen ausgelöst werden. Mit Meta-Programmierung scheint es, dass ich einfache Fälle herausfinden und einige Ausnahmen auflisten kann, aber das ist keine besonders nützliche oder bequeme Methode.
Ich würde gerne denken, dass es irgendwann einen Standard geben wird, um zu definieren, welche Ausnahmen von jeder Python-Funktion ausgelöst werden, und dass diese Information in der offiziellen Dokumentation enthalten sein wird. Bis dahin denke ich, dass ich nur zulassen werde, dass diese Ausnahmen passieren und dass es für meine Nutzer zu Fehlern kommt, da es das vernünftigste zu sein scheint.
Als Python tyro, ich don Ich habe nicht die Erfahrung, mit Sicherheit zu sagen, aber ein Äquivalent zu Javas "Würfen" fühlt sich unpythonisch in der Art und Weise an, wie Funktionsparameter für ihre Typen getestet werden (wenn Ihre Funktion mit jeder iterierbaren Ente umgehen kann). – msw