这可能是之前被问到的,或者我可能过于迂腐,但我自己的搜索却是空洞的。
仔细阅读Python 2.x exceptions page,如果我的脚本确定已导入模块的raise
,我不确定应该__version__
哪一个,{I}例如cv2
,不是正确的版本。例如,我正在处理的脚本需要OpenCV版本3;如果它确定版本!= 3,那么下一个块中raise
的最佳例外是什么?
import cv2
if not cv2.__version__.startswith('3'):
raise ValueError('OpenCV _3_ required')
答案 0 :(得分:2)
如果现有的例外情况不够,您可以创建自己的自定义例外。
class VersionError(Exception):
def __init__(self, msg):
Exception.__init__(self,msg)
答案 1 :(得分:2)
根据您对此异常的处理方式,您有很多选择...通常,我希望安装脚本能够处理设置相应版本的依赖项,因此我可能会认为这是一个简单的运行时断言 - 因此AssertionError
可能是合适的。
这个非常好 - 您不需要if
声明,只需assert
:
assert cv2.__version__.startswith('3'), 'OpenCV _3_ required'
我的下一个赌注是使用RuntimeError
,因为这实际上是在运行时发生的一般异常(并且通常不会被捕获)...它是' sa相当一般"哦,快点,发生了一些我们无法恢复的坏事。让我们吐出一个错误让用户知道发生了什么"。