2010-02-09 188 views
8

说我有以下代码。为什么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的错误?我的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的不无之间,不,我不能在那里引发异常,因为这发生在另一个对它有限制的线程中。

回答

13

这是a known bug。 Pylint并没有做很多流量控制推理。

7

幸运的是,你可以告诉pylint的,你知道的比它:

def foo(): 
    foobar = None 
    if foobar is not None: 
     raise foobar # pylint: disable-msg=E0702 
+0

同时 “pylint的:禁用,味精= E0702” 已被弃用(只是用 “pylint的:禁止= E0702” 来代替)。 – antred 2016-04-18 08:22:04

相关问题