ach*_*uns -2 python exception-handling
我不明白为什么python(至少2.7)没有验证错误的异常处理机制.
例:
try:
some code selecting data from pymongo
except pymongo.errors.OperationFailure:
exception
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果第一次没有调用异常,python将不会验证我是否确实导入了pymongo lib.
知道为什么吗?
如果我正确地阅读您的问题,您想知道为什么except pymongo.errors.OperationFailure在加载模块时不会导致错误(如果您尚未导入pymongo模块).
与Python中的大多数内容一样,except子句的参数在运行时进行评估.事实上,他们可以是表达!Python不会在"编译"时验证它们,而是在那时验证任何其他名称.
原因是Python是一种动态语言.进口可以有条件进行,或者基于未在"编译"时已知的名称,以及模块和其它的命名空间可被替换执行,修改,或通过代码移除.因此,Python无法pymongo.errors.OperationFailure在不运行代码的情况下知道代码执行中的那个点是否是有效名称.
| 归档时间: |
|
| 查看次数: |
356 次 |
| 最近记录: |