我应该抛出哪个Python异常?

时间:2011-03-01 09:19:28

标签: python windows exception

我正在编写一些代码来操纵Windows剪贴板。我要做的第一件事是尝试使用Windows API中的OpenClipboard()函数打开剪贴板:

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

此功能可能失败。所以,如果确实如此,我想提出一个例外。我的问题是,我应该提出哪些标准Python异常?我在想WindowsError是正确的,但不确定。有人可以给我一个建议吗?

3 个答案:

答案 0 :(得分:3)

最好避免直接提高标准异常。创建自己的异常类,从最合适的类中继承它(WindowsError即可)并提升它。这样,您就可以避免在自己的错误和系统错误之间产生混淆。

答案 1 :(得分:1)

WindowsError似乎是一个合理的选择,它会为您记录额外的错误信息。来自文档:

  

异常WindowsError
  发生特定于Windows的错误或错误号与errno值不对应时引发。 winerror和strerror值是从Windows Platform API中的GetLastError()和FormatMessage()函数的返回值创建的。 errno值将winerror值映射到相应的errno.h值。 ...

答案 2 :(得分:1)

提高Windows错误并给它一些额外的信息,例如

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

然后,当它被调试时,它们可以告诉你的Windows错误意味着什么,而不仅仅是随机的窗口错误。