Python:尝试/排除整个模块

标签 python exception try-catch

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

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

最佳答案

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

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

此外,将整个事情包装在 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()

异常仍未被捕获。

关于Python:尝试/排除整个模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16876245/

相关文章:

java - 如何捕获 SQLiteConstraintException 唯一约束失败的列名

c++ - 从构造函数中抛出异常的奇怪格式

ruby-on-rails - 如何正确处理 Rails 中的 ActiveRecord::RecordNotUnique

java - 在这种情况下使用空的 catch block 是不好的做法吗?

Python 在 lambda 中尝试 Catch block

Python 检查应用程序是否全屏

python - Google Cloud ML FAILED_PRECONDITION

python - 在python 3中获取素数列表

python - 使用 "git push heroku master"时出现错误

sql - 旧的,新的错误陷阱彼此相邻时,过程停止