Python:围绕整个模块尝试/除外

Dar*_*rko 6 python exception try-catch

我有一个包含函数和一些类的 python 模块。这个模块基本上被我的几个同事用作工具集。

我想建立一种错误报告系统,只要有人生成我不处理的异常,就会发送一封包含异常信息的电子邮件。通过这种方式,我可以不断改进我的代码的健壮性和我自己的错误消息的帮助性。最好的方法是在整个模块周围放置一个 try/except 块吗?

Jon*_*art 3

我认为您的方法可能不是最好的有几个原因。

有时应该抛出异常。例如,如果我将一些愚蠢的参数传递给函数,它应该通过抛出异常来抱怨。您不希望每次有人传递字符串而不是整数等时都会收到电子邮件,是吗?

此外,将整个内容包装在 try... except 中是行不通的,因为这只会捕获类/函数定义期间(加载/导入模块时)发生的异常。例如,

# Your python library
try:
   def foo():
       raise Exception('foo exception')
       return 42
except Exception as e:
   print 'Handled: ', e

# A consumer of your library
foo()
Run Code Online (Sandbox Code Playgroud)

异常仍未捕获。