我写返回的Json在以下格式的API ...得到完整的异常类型/消息和堆栈跟踪
{"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的观察窗口中检查e
,我得到KeyError: 'Something'
,但str(e)
结果在'Something'
这是非常无益的。
我google了,我找不到任何方式从异常得到正确的消息。显然,曾经有以V < 2.4 .message
但是这对我没有任何帮助3.3
作为替代方案,我试图做:
Ret['Exception'] = str(type(e)) + ": " + str(e)
这就造成<class 'KeyError'>: 'job'
更接近一点,但它开始感觉越来越黑客。
我也想包括堆栈跟踪,但有甚至运气不太那里 - 我可以得到__traceback__
但当然它只是导致物体如的描述不是序列化,并呼吁str()
<traceback object at 0x0000000004024E48>
我怎样才能得到一个体面的/全面的错误信息?
它们都打印相同的事情 – jamylak
这就是我需要的东西 - 特别是追踪模块。非常感谢 – Basic