绕过错误继续编码

2024-05-05 16:43:58 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

这段代码将不是打印“hello”,而是跳过它,转到pass。我的问题是,在Python2.7中有没有一种简单的方法可以真正忽略这一点?我在3.4中读到了一些使之更简单的东西,但是我宁愿继续使用Python2.7。在


Tags: 方法代码falsehellopassassertthislike
3条回答

您可以使用^{}

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

This prints no matter what

如果要在没有发生错误的情况下执行代码块,可以使用try except else构造。在

如果某个else块未发生错误,请移动您希望发生的操作:

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

我不认为你能,我也不认为你应该。在

Errors should never pass silently.
Unless explicitly silenced.

Zen of Python

这意味着作为一个程序员,你有责任思考在哪里以及为什么会出现异常。您应该(实际上必须)避免在try语句中放入一个长代码块,然后考虑异常。正确的思维流程是:

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

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

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

相关问题 更多 >