我编写了一个API,该API以以下格式返回Json...
如果我在最后一行设置断点并在eclipse的watch窗口中检查e,我会得到KeyError: 'Something',但是str(e)的结果是'Something',这非常不方便。
我已经搜索过了,但是找不到从异常中获取正确消息的方法。显然,在v<2.4中有一个.message,但在3.3中对我没有帮助。
作为替代方案,我尝试过:
这导致了一个稍微接近一点的错误信息:
我还想包含一个堆栈跟踪,但是我在这方面的运气更少 - 我可以得到
如何获取一个好的/全面的错误消息?
{"Success": true, Result: {...}}
{"Success": false, ExceptionId: "(some uuid)"}
异常已记录。原则上,这对于允许某人讨论错误,而不向他们透露其内容(作为一种安全措施)是很好的。在调试期间,我还想输出错误消息,以免让我一直参考数据库。
目前的问题是如何从异常中获取有用信息(无论是返回或记录在数据库中)
我正在做这样的事情...
try:
Ret['Result'] = <Blah>
Ret['Success'] = True
except Exception as e:
# ... Logging/ExceptionId
if Settings.DebugMode:
Ret['Exception'] = str(e)
如果我在最后一行设置断点并在eclipse的watch窗口中检查e,我会得到KeyError: 'Something',但是str(e)的结果是'Something',这非常不方便。
我已经搜索过了,但是找不到从异常中获取正确消息的方法。显然,在v<2.4中有一个.message,但在3.3中对我没有帮助。
作为替代方案,我尝试过:
Ret['Exception'] = str(type(e)) + ": " + str(e)
这导致了一个稍微接近一点的错误信息:
<class 'KeyError'>: 'job'
,但越来越感觉像是一种hackish。我还想包含一个堆栈跟踪,但是我在这方面的运气更少 - 我可以得到
__traceback__
,但它显然不可序列化,并且对它调用str()
仅会导致该对象的描述,例如<traceback object at 0x0000000004024E48>
。如何获取一个好的/全面的错误消息?