The*_*i.9 354 python exception
我有一个尝试...除了我的代码中的块和抛出异常时.我真的只想继续使用代码,因为在这种情况下,一切都仍然可以正常运行.问题是如果你将except:block留空或者没有#do,它会给你一个语法错误.我不能继续使用,因为它不在循环中.是否有一个关键字,我可以使用它告诉代码继续前进?
And*_*ume 548
except:
pass
Run Code Online (Sandbox Code Playgroud)
tzo*_*zot 251
Python中的标准"nop"是pass声明:
try:
do_something()
except Exception:
pass
Run Code Online (Sandbox Code Playgroud)
使用except Exception而不是裸露的except避免捕捉异常喜欢SystemExit,KeyboardInterrupt等等.
由于在Python 2中记住了最后抛出的异常,异常抛出语句中涉及的一些对象将无限期地保持活动(实际上,直到下一个异常).如果这对您很重要并且(通常)您不需要记住最后抛出的异常,则可能需要执行以下操作而不是pass:
try:
do_something()
except Exception:
sys.exc_clear()
Run Code Online (Sandbox Code Playgroud)
这清除了最后抛出的异常.
在Python 3中,保存异常实例的变量在退出块时被删除except.即使变量先前保持一个值,在进入和退出该except块之后它也会再次变为未定义.
Jac*_*nor 171
在Python 3.4中有一种新方法可以做到这一点:
from contextlib import suppress
with suppress(Exception):
# your code
Run Code Online (Sandbox Code Playgroud)
这是添加它的提交:http://hg.python.org/cpython/rev/406b47c64480
以下是作者Raymond Hettinger,谈论这个以及各种其他Python热点(相关位于43:30):http://www.youtube.com/watch?v = OSGv2VnC0go
如果你想模仿bare except关键字,也忽略了 - KeyboardInterrupt虽然你通常不会 - 你可以使用with suppress(BaseException).
编辑:在3.4版本之前看起来像是ignored重命名的suppress.