为什么Pylint在这个raise语句上给出错误E0702,抛出NoneType?
假设我有以下这段代码。
def foo():
foobar = None
if foobar is not None:
raise foobar
当我用pylint来检查这段代码时,出现了以下错误:
E0702:4:foo: Raising NoneType while only classes, instances or string are allowed
这是pylint的一个bug吗?还是说我的pylint版本太旧了?
pylint 0.18.0,
astng 0.19.1, common 0.45.0
Python 2.5.1 (r251:54863, Aug 25 2008, 09:23:26)
注意:我知道这段代码没有什么实际意义,它只是简化到最基本的样子,以便突出当前的问题。通常在第2行和第3行之间会有一些操作,这些操作可能会让foobar不等于None。而且我不能在这里直接抛出异常,因为那是在另一个线程中进行的,而且有一些限制。
2 个回答
12
幸运的是,你可以告诉pylint,你比它更了解情况:
def foo():
foobar = None
if foobar is not None:
raise foobar # pylint: disable-msg=E0702
17
这是一个已知的错误。Pylint在分析代码的流程控制方面做得不太好。