Skip to main content
 首页 » 编程设计

python try except 不捕获所有错误

2025年05月04日10exmyth

在我的 flask web 应用程序中,我使用 beaker 库来处理 session 。在下面的代码中,由于某些未知原因,生产服务器引发了异常,但我的本地电脑运行良好。

import sys 
 
... 
 
try: 
    beaker_session = request.environ['beaker.session'] 
    beaker_session['user_id'] = user.id  
    beaker_session.save() 
except: 
    flash(sys.exc_info()[0]) 
    return render_template('main/login.html') 

本地计算机按预期保存 session ,没有任何异常。 生产服务器 (RedHat OpenShift) 恰好在“beaker_session.save()”行上引发错误。但是,我的登录页面没有显示闪现消息,而是抛出了内部服务器错误 500。我检查了 beaker 后端 url (mysql db),没有问题,因为它在代码的其他部分工作,我在其中保留新注册的用户。 所以,我的问题是 1) 为什么 except 部分不起作用? 2) 为什么烧杯不能保存 session 。 谢谢。

请您参考如下方法:

我不熟悉 beaker 库,但如果它是一个 SWIG 包装库,并且异常发生在 C++ 代码中,则设计者可能忽略了将异常映射到适当的 python 异常。如果是这种情况,那么 Python 将无法处理异常——甚至 try/except 也会错过它。