python - 如何处理 except 子句中引发的异常

标签 python python-2.7 flask

假设你有这样的 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/

相关文章:

python - 用Python中的字典值替换正则表达式匹配组

mongodb - For 循环在 Jinja/Flask 中不起作用

python - 在 flask 模板中访问这些字典值

python - matplotlib:将图例文本颜色与散点图中的符号匹配

python - 运行代码时为 "pygame.error: display Surface quit"

Python Enum 在对成员值使用相同的字典时显示奇怪的行为

python - python 中 os.rename 的中断

python - 如何返回字母子串?

python - 如何避免使用 Python 2.7 在 OS X 10.8 上创建 .pyc 文件?

flask - 具有代理 channel 的 Flask 的正确 URL 路由配置