我试了一下...除了代码中的块和抛出异常时。我真的只想继续使用代码,因为在这种情况下,一切都仍然可以正常运行。问题是如果你将except:block留空或者没有#do,它会给你一个语法错误。我不能继续使用,因为它不在循环中。是否有一个可以使用的关键字告诉代码继续运行?
答案 0 :(得分:504)
except:
pass
答案 1 :(得分:239)
Python中的标准“nop”是pass
语句:
try:
do_something()
except Exception:
pass
使用except Exception
代替裸except
,可以避免捕获SystemExit
,KeyboardInterrupt
等异常。
由于在Python 2中记住了最后抛出的异常,异常抛出语句中涉及的一些对象将无限期地保持活动(实际上,直到下一个异常)。如果这对您很重要并且(通常)您不需要记住上次抛出的异常,则可能需要执行以下操作而不是pass
:
try:
do_something()
except Exception:
sys.exc_clear()
这会清除最后抛出的异常。
在Python 3中,在退出except
块时,保存异常实例的变量会被删除。即使变量之前保留了一个值,在进入和退出except
块之后,它再次变为未定义。
答案 2 :(得分:152)
在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)
。
修改:在3.4版本发布之前,ignored
似乎已重命名为suppress
。
答案 3 :(得分:14)
试试这个:
try:
blah()
except:
pass