Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用多个except语句返回try/except块外部的错误_Python_Python 3.x_Try Except - Fatal编程技术网

Python 使用多个except语句返回try/except块外部的错误

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) 根据我的理解,应该没有错误,必

我正在使用“美丽的汤”中的“尝试除块”从帖子中获取图像。尝试块检查帖子是否有某个类,如果没有,它将移动到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)

根据我的理解,应该没有错误,必须打印“支票”。但是我发现这个错误,没有定义名称“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呢