Извините за длинный заголовок, но он кажется наиболее наглядным для моего вопроса.
В принципе, мне сложно найти информацию об исключениях в официальной документации на python. Например, в одной программе, которую я сейчас пишу, я использую функцию перемещения libyl:
from shutil import move
move('somefile.txt', '/tmp/somefile.txt')
Это работает отлично, если у меня есть доступ на запись к /tmp/, достаточно дискового пространства, и если выполняются все остальные требования.
Однако при написании общего кода часто бывает сложно гарантировать эти факторы, поэтому обычно используются исключения:
from shutil import move
try:
move('somefile.txt', '/tmp/somefile.txt')
except:
print 'Move failed for some reason.'
Я хотел бы на самом деле поймать соответствующие исключения, вместо того, чтобы просто ловить все, но я просто не могу найти список исключений, созданных для большинства модулей python. Есть ли способ узнать, какие исключения может дать данная функция, и почему? Таким образом, я могу сделать соответствующие случаи для каждого исключения, например:
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.'
Ответьте на вопросы, кто может связать меня с какой-то соответствующей документацией, которую я как-то упускал из виду в официальных документах, или предоставить верный способ выяснить, какие исключения выбраны с помощью каких функций и почему.
Спасибо!
ОБНОВЛЕНИЕ. Из ответов следует, что на самом деле нет 100% -ного прямого способа выяснить, какие ошибки вызывают определенные функции. С метапрограммированием кажется, что я могу выяснить простые случаи и перечислить некоторые исключения, но это не особенно полезный или удобный метод.
Хотелось бы подумать, что в конечном итоге будет определен стандарт для определения того, какие исключения выражаются каждой функцией python, и что эта информация будет включена в официальную документацию. До тех пор я думаю, что я просто позволю этим исключениям пройти и пропустить ошибки для моих пользователей, поскольку кажется, что это самая разумная вещь.