请参考以下代码:
import sys
def x():
try:
y()
except:
print("exception caught")
def y():
sys.exit()
x()
在这种情况下,函数x()
中的try循环将被带到函数y()
中,由于sys.exit()
引发错误,导致except循环运行。我知道,我们可以更改它以引发SystemExit退出它,但是有没有办法摆脱try循环,或者有没有更好的方法来编写此代码?
感谢您的阅读并提前致谢。
答案 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()