Python:如何忽略exception并继续?
我有一个尝试…除了在我的代码块和当一个exception抛出。 我真的只想继续使用代码,因为在这种情况下,一切仍然能够正常运行。 问题是,如果你把except:block留空或者用#do什么也不做,它会给你一个语法错误。 我不能使用继续,因为它不在一个循环。 有一个关键字我可以使用,告诉代码只是继续前进?
except: pass
Python中的标准“nop”是pass
语句:
try: do_something() except Exception: pass
由于Python中最后抛出的exception被记住,exception抛出语句中涉及的一些对象被无限期地保存(实际上,直到下一个exception)。 如果这对你很重要,并且(通常)你不需要记住上次抛出的exception,那么你可能想要做下面的事情来代替pass
:
try: do_something() except Exception: sys.exc_clear()
这将清除最后抛出的exception。
在Python 3.4中有一个新的方法来实现这个function:
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
如果你想模仿bare关键字,并且忽略KeyboardInterrupt
类的东西 – 虽然你通常不会 – 你可以使用with suppress(BaseException)
。
编辑:看起来像ignored
,在3.4版本之前被重新命名为suppress
。
尝试这个:
try: blah() except: pass