我在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')