我试一试……除了块在我的代码和当异常抛出。我真的只想继续写代码因为在这种情况下,一切仍然能够正常运行。问题是,如果except:块为空或没有#do,就会出现语法错误。我不能用continue,因为它不在循环中。是否有一个关键字,我可以使用,告诉代码只是继续前进?
当前回答
通用的回答
Python中标准的"nop"是pass语句:
try:
do_something()
except Exception:
pass
使用except Exception代替裸except避免捕获SystemExit, KeyboardInterrupt等异常。
Python 2
由于在Python 2中会记住最后一个抛出的异常,因此异常抛出语句中涉及的一些对象将无限期地保持活动状态(实际上,直到下一个异常)。如果这对你很重要,并且(通常)你不需要记住最后抛出的异常,你可能想要执行以下操作而不是pass:
try:
do_something()
except Exception:
sys.exc_clear()
这将清除最后抛出的异常。
Python 3
在Python 3中,保存异常实例的变量在退出except块时被删除。即使变量之前持有一个值,在进入和退出except块之后,它也会再次变为未定义。
其他回答
except Exception:
pass
Python文档中的pass语句
试试这个:
try:
blah()
except:
pass
在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之类的东西(尽管您通常不会这样做),则可以使用suppress(BaseException)。
编辑:看起来在3.4发布之前被重命名为“被忽略”。
通用的回答
Python中标准的"nop"是pass语句:
try:
do_something()
except Exception:
pass
使用except Exception代替裸except避免捕获SystemExit, KeyboardInterrupt等异常。
Python 2
由于在Python 2中会记住最后一个抛出的异常,因此异常抛出语句中涉及的一些对象将无限期地保持活动状态(实际上,直到下一个异常)。如果这对你很重要,并且(通常)你不需要记住最后抛出的异常,你可能想要执行以下操作而不是pass:
try:
do_something()
except Exception:
sys.exc_clear()
这将清除最后抛出的异常。
Python 3
在Python 3中,保存异常实例的变量在退出except块时被删除。即使变量之前持有一个值,在进入和退出except块之后,它也会再次变为未定义。
推荐文章
- Numpy Max vs amax vs maximum
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 每n行有熊猫
- 实例属性attribute_name定义在__init__之外
- 如何获取在Python中捕获的异常的名称?
- 第一次出现的值大于现有值的Numpy
- 如何从Python函数中返回两个值?
- 前一个月的Python日期
- Python中方括号括起来的列表和圆括号括起来的列表有什么区别?
- Python日志记录不输出任何东西
- 每n秒运行特定代码
- SQLAlchemy是否有与Django的get_or_create等价的函数?
- 如何将python datetime转换为字符串,具有可读格式的日期?
- 美丽的汤和提取div及其内容的ID
- 在Python中重置生成器对象