2017-03-05 27 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() 

這似乎通過了短絨。

相關問題