Python 使用多个except语句返回try/except块外部的错误
我正在使用“美丽的汤”中的“尝试除块”从帖子中获取图像。尝试块检查帖子是否有某个类,如果没有,它将移动到Exception。因此,我在try块中得到这个错误,该类不存在。这是代码的简化版本Python 使用多个except语句返回try/except块外部的错误,python,python-3.x,try-except,Python,Python 3.x,Try Except,我正在使用“美丽的汤”中的“尝试除块”从帖子中获取图像。尝试块检查帖子是否有某个类,如果没有,它将移动到Exception。因此,我在try块中得到这个错误,该类不存在。这是代码的简化版本 a = "check" try: print(b) except Exception as e: print(c) except Exception as e: print(e) except Exception as e: print(a) 根据我的理解,应该没有错误,必
a = "check"
try:
print(b)
except Exception as e:
print(c)
except Exception as e:
print(e)
except Exception as e:
print(a)
根据我的理解,应该没有错误,必须打印“支票”。但是我发现这个错误,没有定义名称“b”您面临的问题是:
例外情况中仅考虑
try
块强>
如果要捕获在块中引发的错误(除了
块),则需要将它们折叠到块中,然后重试
块本身
简短示例:
a = "check"
try:
print(b)
except Exception as e:
try:
print(c)
except Exception as e:
try:
print(e)
except Exception as e:
print(a)
@Scotty1-所说的似乎是你问题的答案,但是这是另一种方式,没有太多嵌套的try例外。 我本打算把它作为一条评论发布,但它有点长,所以我把它放在这里,如果它是错误的,我会删除它 为什么不这样做呢
a = 'check'
varL = ['b', 'c', 'e', 'a']
for x in varL:
if x in locals() or x in globals():
exec('print({})'.format(x))
请注意,exec通常比执行普通代码慢,因此如果执行此操作,请确保不会重复多次 当
a='check'
时,如何将b
打印为check
?我认为这太简单了。要么你删除了太多的代码,以至于你写的东西没有意义,要么就是@Scotty1-说了什么。请参阅我最后的except语句。我的理解是,它首先检查try,然后给出一个错误,然后一个接一个地向下检查。然后它进入最后一个except语句并打印a。这就是我的想法,如果有更好的方法的话。我可以在if-else语句中完成它。但是我怎么能用try-catch呢