Какое исключение Python я должен бросить? - PullRequest
1 голос
/ 01 марта 2011

Я пишу код для управления буфером обмена Windows.Прежде всего я пытаюсь открыть буфер обмена с помощью функции OpenClipboard() из Windows API:

if OpenClipboard(None): 
    # Access the clipboard here     
else:
    # Handle failure

Эта функция может не работать.Так что, если это произойдет, я хотел бы поднять исключение.У меня вопрос, какое из стандартных исключений Python я должен поднять?Я думаю, что WindowsError будет правильным, но не уверен.Может ли кто-нибудь дать мне предложение?

Ответы [ 3 ]

3 голосов
/ 01 марта 2011

Лучше избегать повышения стандартных исключений напрямую.Создайте свой собственный класс исключений, унаследуйте его от наиболее подходящего (WindowsError в порядке) и поднимите его.Таким образом вы избежите путаницы между вашими собственными ошибками и системными ошибками.

1 голос
/ 01 марта 2011

Поднимите ошибку Windows и дайте ей некоторую дополнительную информацию, например

raise WindowsError("Clipboard can't be opened")

Затем, когда она отлажена, они могут сказать, что означает ошибка Windows, а не просто случайный оконный ошибка, ни за что.

1 голос
/ 01 марта 2011

WindowsError кажется разумным выбором, и он будет записывать дополнительную информацию об ошибках для вас.Из документов:

исключение WindowsError
Возникает, когда возникает ошибка, связанная с Windows, или когда номер ошибки не соответствует значению ошибки.Значения winerror и strerror создаются из возвращаемых значений функций GetLastError () и FormatMessage () из API платформы Windows.Значение errno отображает значение winerror в соответствующие значения errno.h....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...