gpt4 book ai didi

Python:捕获特定异常

转载 作者:行者123 更新时间:2023-11-28 17:54:04 25 4
gpt4 key购买 nike

我有这样的代码(Python 2.5,GAE 开发服务器):

try:
yt_service.UpgradeToSessionToken() // this line produces TokenUpgradeFailed
except gdata.service.TokenUpgradeFailed:
return HttpResponseRedirect(auth_sub_url()) # this line will never be executed (why?)
except Exception, exc:
return HttpResponseRedirect(auth_sub_url()) # instead this line is executed (why?)

所以我在最后一行和调试器下设置了断点,我看到了:

"exc"   TokenUpgradeFailed: {'status': 403, 'body': 'html stripped', 'reason': 'Non 200 response on upgrade'}   
"type(exc)" type: <class 'gdata.service.TokenUpgradeFailed'>
"exc is gdata.service.TokenUpgradeFailed" bool: False
"exc.__class__" type: <class 'gdata.service.TokenUpgradeFailed'>
"isinstance(exc, gdata.service.TokenUpgradeFailed)" bool: False
"exc.__class__.__name__" str: TokenUpgradeFailed

我在 python 异常处理中错过了什么?为什么 isinstance(exc, gdata.service.TokenUpgradeFailed) 为 False?

最佳答案

如果您的相对/绝对 import 语句在所有地方都不匹配,则会发生此错误。如果不匹配,目标模块可以被加载不止一次并且在稍微不同的上下文中。通常这不是问题,但它确实阻止了来自不同加载模块的类比较相等(因此异常捕获问题)。

错误可能还有其他原因,但我建议仔细检查您的代码并确保导入 gdata.service 模块的所有内容都明确提及 gdata 包。即使在 gdata 包本身中,每个使用 service 模块的模块都应该通过 from gdata import service 而不是通过方式从包中显式导入它相关导入:导入服务

关于Python:捕获特定异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3752048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com