Python:如何忽略异常并继续?
这个问题在这里已经有了答案:
except:
pass
Python中的标准“nop”是pass
语句:
try:
do_something()
except Exception:
pass
由于Python中会记住最后抛出的异常,因此抛出异常的语句中涉及的一些对象将无限期地保持活动状态(实际上,直到下一个异常为止)。 如果这对你很重要,并且(通常)不需要记住上次抛出的异常,则可能需要执行以下操作而不是pass
:
try:
do_something()
except Exception:
sys.exc_clear()
这会清除最后抛出的异常。
有一种新的方法可以在Python 3.4中实现:
from contextlib import suppress
with suppress(Exception):
# your code
以下是添加它的提交:http://hg.python.org/cpython/rev/406b47c64480
下面是作者Raymond Hettinger谈论这个以及各种其他Python热点(相关位在43:30):http://www.youtube.com/watch?v = OSGv2VnC0go
如果你想效仿裸except
关键字,也忽略之类的东西KeyboardInterrupt
-虽然你平时不-你可以用with suppress(BaseException)
编辑:看起来好像ignored
,在3.4发布之前重新命名为suppress
。