【发布时间】:2016-06-24 09:29:39
【问题描述】:
try:
import MySQLdb
# some action
except ImportError as err:
# fallback code
PyCharm 对此给出代码检查警告:
try 块中的'MySQLdb' 和 'except ImportError' 也应该在 except 块中定义
此检查检测应解析但未解析的名称。由于动态调度和鸭子类型,这在有限但有用的情况下是可能的。顶级项和类级项的支持优于实例项。
好的,我认为警告是合理的,因为fallback code 假定未安装“MySQLdb”,而可能是一些不同的错误刚刚引发了 ImportError。所以我使用了类似的东西:
try:
import MySQLdb
# some action
except ImportError as err:
if "MySQLdb" in repr(err):
# fallback code
else:
raise
PyCharm 警报仍然存在,但可能只是 PyCharm 问题(谷歌显示此类检查存在问题)
问题:
-
当您“除了 ImportError”时,是否真的值得检查名称?即使在简单的情况下(
import MySQLdb之后没有some action)? -
如果值得检查,上面的例子是正确的方法吗?如果没有 - 正确的方法是什么?
P.S. MySQLdb 只是系统中可能不存在的模块的一个示例。
【问题讨论】:
-
谢谢!您提出的问题与主题很接近。然而,我问的是稍微不同的上下文。
-
所以只需将 MySQLdb 设置为 None 以消除警告
-
感谢“除了 ImportError 作为别名:”这回答了一个非常令人困惑的领域。 :)
标签: python exception-handling pycharm importerror