2017-03-05 11 views
0

我的代码是:什么意思pylint的时候才说的“而只有类或实例被允许提高异常(养坏型)”

except Exception as exception: 
    raise exception 

(我为了实现用这个代码在测试执行其他测试而不失败的finally子句)。

但pylint的说,“提高异常而仅有类或实例被允许(养坏型)”

是什么意思?该怎么办?

我从Pylint源代码中得知:“当一个既不是类,实例,也不是字符串的东西被引发时(即将会引发TypeError)”时使用。但这对我来说并不意味着什么。

EDITED

的代码片段引发此pylint的错误是:

# pylint: disable=invalid-name 

"""A test.""" 

spam = True 

try: 
    pass 
except Exception as exception: 
    raise exception 
finally: 
    spam = False 

我使用的是一个Python 3.6.0,1.7.0 pylint的和星形线1.5.0 MacOs 10.12.3。

安东尼Sottile指出,使用:

except Exception as exception: # sic 
    raise 

不提这个pytlint警告。

所有在我的代码饲养坏类型的错误是这样的,所以我已经到了这样的结论

except Exception: 
    raise 

是根据pylint的提高此异常的正确方法。

但是,我必须说,这个错误的pylint消息是相当神秘的。

感谢您的帮助。

+2

你有很短的可重复片段吗?仅仅在这个问题上的那个人并不会为我触发这种皮棉。顺便说一句:重新渲染一个异常通常会用空白的'raise'来完成,因为这会保留堆栈跟踪 –

+1

您不需要except子句;试试......终于没事了(实际上除非最后还是不允许使用)。 –

+1

我发现一个有趣的微型窃听器这个皮棉但是:d https://i.fluffy.cc/KR3G8V9qqzTJrrMhZwDlMzGMwGDGxqCB.html#L13 –

回答

0
 except Exception as exn: 
      pass 

     raise exn() 

这似乎通过了短绒。

相关问题