如何手动记录要与报表器一起使用的异常



我在GAE应用程序中使用报告器,通过电子邮件通知所有未捕获的异常。但我也想被告知其他(处理)的问题,所以,我使用以下代码:

if something:
    pass
else:
    logging.exception('something is wrong')

但是对于AttributeError,报告者在这种情况下失败了:

Traceback (most recent call last):
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ereporter/ereporter.py", line 227, in emit
signature = self.__GetSignature(record.exc_info)
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ereporter/ereporter.py", line 175, in __GetSignature
fulltype = '%s.%s' % (ex_type.__module__, ex_type.__name__)
AttributeError: 'NoneType' object has no attribute '__module__'

我明白为什么会这样——没有真正的例外。但是还有没有办法用记者来记录这样的案例呢?

就像你自己说的,报告没有例外。由于ereporter似乎只有报告异常,因此解决方案很清楚:

if something:
    pass
else:
    try:
        raise Exception()
    except Exception:
         logging.exception('something is wrong')

相关内容

最新更新