假设你有这样的 Flask api 代码:
@app.route('/doing/foo')
def foo():
try:
...
except Exception as ex:
doing some stuff
现在做一些事情
不小心抛出了另一个异常。如何防止服务器显示另一个通用内部服务器错误而不知道发生了什么?
换句话说,如何捕获可能源自 except 子句
的异常?
最佳答案
啊哈!这是一个 100 年的问题。
第一个选择是迁移到 Python 3。
Python 3 具有异常链,并且会打印两种异常 - 正在处理的异常和由于处理不当而引发的异常。
第二个选项是自己实现异常链:
使用当前 except:
内的另一个 try- except
子句将新异常手动注入(inject)到正在处理的异常中。
请记住,它将导致循环引用。由于这是一次性异常(exception),我不会费心去处理它。进一步使用此方法将需要使用 traceback.clear_frames()
清理回溯。
关于python - 如何处理 except 子句中引发的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45387525/