代码之家  ›  专栏  ›  技术社区  ›  wich

为什么pylint在这个raise语句上给出错误e0702,raise nonetype?

  •  9
  • wich  · 技术社区  · 15 年前

    假设我有以下代码。

    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 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 回复  |  直到 15 年前
        1
  •  13
  •   John Feminella    15 年前

    它是 a known bug . pylint不做很多流控制推断。

        2
  •  7
  •   Ned Batchelder    15 年前

    幸运的是,你可以告诉皮林,你比它更清楚:

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