2012-08-16 7 views
26

Jeśli używam pylint (przez sublimerlinter) pojawia się następujący komunikat ostrzegawczy:Jak naprawić: W602 forma przestarzała podniesienia wyjątek

W602 deprecated form of raising exception

To ja jak używać wyjątków w moim kodu:

if CONDITION == True: 
    raise ValueError, HELPING_EXPLANATION 
+1

Dodałem tę dość trywialną Q & A, ponieważ szukanie w Google dla "W602 przestarzałej formy zgłaszania wyjątków" nie daje żadnych pomocnych linków. – Framester

Odpowiedz

28

Podnieś wyjątek tak:

if CONDITION == True: 
    raise ValueError(HELPING_EXPLANATION) 

Od PEP 8 -- Style Guide for Python Code - Programming Recommendations:

Podczas podnoszenia wyjątek, należy podnieść ValueError('message') zamiast starszej formy raise ValueError, 'message'.

Preferowana jest forma korzystająca z arkusza, ponieważ gdy argumenty wyjątku są długie lub zawierają formatowanie ciągów znaków, nie trzeba używać znaków kontynuacji wiersza dzięki nawiasowi zawierającemu. Starszy formularz zostanie usunięty w Pythonie 3.

+16

Podobnie, jeśli chcesz dodać traceback w Pythonie 2.x, użyj 'raise ValueError (HELPING_EXPLANATION), None, tb' zamiast' raise ValueError, HELPING_EXPLANATION, tb', aby uniknąć tego ostrzeżenia. –

+0

Jaka jest jego wartość, nie ma sposobu kompatybilnego z Python3-forward, aby dodać traceback w Pythonie 2.x. –

+0

@TobiasKienzler - Świetnie, dzięki! Żałuję, że nie wysłałeś tego jako odpowiedzi, więc mogłem go zgarnąć, a ty mógłbyś zdobyć przedstawiciela, ale zamiast tego będziesz musiał zadowolić się przegłosowaniem swojego komentarza. – ArtOfWarfare