如何突破python中的try循环?

时间:2019-02-24 07:53:14

标签: python python-3.x

请参考以下代码:

import sys
def x():
    try:
        y()
    except:
        print("exception caught")
def y():
    sys.exit()
x()

在这种情况下,函数x()中的try循环将被带到函数y()中,由于sys.exit()引发错误,导致except循环运行。我知道,我们可以更改它以引发SystemExit退出它,但是有没有办法摆脱try循环,或者有没有更好的方法来编写此代码?

感谢您的阅读并提前致谢。

3 个答案:

答案 0 :(得分:1)

您可以编写except Exception,它将捕获代码中所有常见的异常,但不会捕获SystemExit异常,因为它不继承自Exception,而是继承自{{1 }}

答案 1 :(得分:0)

通常,仅使用而不捕获任何错误是一个坏主意...因此,我的建议是采用您提到的另一种方式,例如:

>>> s = '[1,2,3]'
>>> list(c for c in s if c.isdigit())    
['1', '2', '3']

>>> map(int, list(c for c in s if c.isdigit()))
[1, 2, 3]

答案 2 :(得分:0)

我想您只是想从try块退出而不会被except块困住

except Exception as e:

代替

except:

这是完整的代码:

import sys
def x():
    try:
        y()
    except as e:
        if e is SystemExit:
            print("exception caught")
def y():
    raise SystemExit
x()