使用多个except语句在try / except块之外返回错误

时间:2019-01-30 09:56:50

标签: python python-3.x try-except

我正在使用try语句,除了在美丽的汤中添加块,以从帖子中获取图像。尝试阻止检查该帖子是否具有某个类(如果没有),则将其移至except。所以我在try块中收到该错误,该类不存在。这是代码的简化版本。

a = "check"

try:
    print(b)
except Exception as e:
    print(c)
except Exception as e:
    print(e)
except Exception as e:
    print(a)

根据我的理解,应该没有错误,并且必须打印出“ check”。但是我收到此错误 名称'b'未定义

2 个答案:

答案 0 :(得分:2)

您面临的问题是:
只有try块被视为例外! 如果要捕获在except块中引发的错误,则需要将它们自身折叠成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)

答案 1 :(得分:0)

@ Scotty1-所说的似乎是您的问题的答案,但这是另一种嵌套尝试较少的方法。 我本来打算将其发布为评论,但是它有点长,所以我把它放在这里,如果有错,请将其删除。

为什么不做这样的事情?

a = 'check'
varL = ['b', 'c', 'e', 'a']
for x in varL:
    if x in locals() or x in globals():
        exec('print({})'.format(x))

请注意,exec通常比执行常规代码慢,因此,如果执行此操作,请确保不会多次重复执行。