绕过错误并继续编码

时间:2014-04-05 21:15:55

标签: python python-2.7 exception-handling

这是我之前遇到的一个简单问题。基本上,solutions like thisthis“忽略”异常实际上并非如此。即使他们不再崩溃python,他们仍然会停止初始try子句中的任何代码。

try:
    assert False
    print "hello"
except AssertionError:
    pass

此代码将打印“hello”,而是跳过它,转到传递。我的问题是,有没有一种简单的方法可以在Python 2.7中真正忽略它?我读了3.4中的一些事情,以使这更容易,但我宁愿继续使用python 2.7。

3 个答案:

答案 0 :(得分:2)

我认为你不能,而且我认为你不应该。

  

错误不应该默默地传递。
  除非明确地保持沉默。

     

Python的禅

这意味着作为程序员,你有责任思考可能出现异常的地点和原因。你应该(实际上)避免将一长串代码放在try语句中然后考虑异常的诱惑。正确的思想流程是:

  1. 撰写assert False
  2. 请注意,可能会引发AssertionError
  3. assert False放入try...except...
  4. 撰写print 'Hello'
  5. 请注意,此行不会导致任何错误(顺便说一句,最后一句话)
  6. 利润
  7. 所以你的代码应该是这样的(其他答案也非常好):

    try:
        assert False
    except AssertionError:
        pass
    print 'Hello'
    

答案 1 :(得分:1)

如果else块出现错误,请移动您想要发生的事情:

try:
    assert False
except AssertionError:
    print "error"
else:
    print "no error"

答案 2 :(得分:1)

您可以使用finally

try:
    assert False
    print "Hello"
except AssertionError:
    pass
finally:
    print "This prints no matter what"

This prints no matter what

如果您想在未发生错误的情况下执行代码块,则可以使用try except else构造。