绕过错误并继续代码

the*_*age 5 python exception-handling python-2.7

这是我之前遇到的一个简单问题。本质上,像这样这样“忽略”异常的解决方案确实没有。即使它们不再使 python 崩溃,它们仍然会停止初始 try 子句中的任何代码。

try:
    assert False
    print "hello"
except AssertionError:
    pass
Run Code Online (Sandbox Code Playgroud)

这段代码不会打印“hello”,而是跳过它,进入通行证。我的问题是,是否有一种简单的方法可以在 Python 2.7 中真正忽略这一点?我阅读了 3.4 中发生的一些事情以使这更容易,但我宁愿留在 python 2.7。

Dun*_*nno 4

我不认为你可以,也不认为你应该这样做。

错误永远不应该悄无声息地过去。
除非明确沉默。

Python之禅

这意味着作为程序员,您有责任思考异常可能出现在何处以及为何出现。您应该(实际上必须)避免在try语句中放入很长的代码块然后考虑异常的诱惑。正确的思路是:

  1. assert False
  2. 请注意,它可能会引发断言错误
  3. 放入块assert Falsetry...except...
  4. print 'Hello'
  5. 请注意,这一行不会导致任何错误(顺便说一下,著名的最后一句话)
  6. 利润

所以你的代码应该是这样的(其他答案也很好):

try:
    assert False
except AssertionError:
    pass
print 'Hello'
Run Code Online (Sandbox Code Playgroud)