Ik heb een functie die er als volgt uitziet:
def check_for_errors(result):
if 'success' in result:
return True
if 'error' in result:
raise TypeError
return False
Als deze functie met succes wordt uitgevoerd, zou ik een bool
moeten krijgen, maar als er een fout is, zou ik een TypeError
moeten krijgen – wat goed is omdat ik ermee omga in een andere functie.
Mijn functie eerste regel ziet er als volgt uit:
def check_for_errors(result: str) -> bool:
Mijn vraag is: moet ik de fout in mijn typehint vermelden?
Antwoord 1, autoriteit 100%
Typehints kunnen niets zeggen over uitzonderingen. Ze vallen volledig buiten het bereik van de functie. U kunt de uitzondering echter nog steeds documenteren in de docstring.
Van PEP 484 — Typ Hints:
Uitzonderingen
Er wordt geen syntaxis voorgesteld voor het vermelden van expliciet genoemde uitzonderingen. Momenteel is de enige bekende use case voor deze functie documentatie, in welk geval de aanbeveling is om deze informatie in een docstring te zetten.
Guido van Rossum heeft zich sterk gekant tegen het toevoegen van uitzonderingenaan de typehints spec, omdat hij niet in een situatie wil belanden waarin uitzonderingen op elk niveau gecontroleerd(verwerkt in aanroepcode) of expliciet moeten worden aangegeven.
Antwoord 2, autoriteit 10%
Het is meestal een goed idee om de fout te documenteren. Dit betekent dat een andere ontwikkelaar die uw functie gebruikt uw fouten kan afhandelen zonder uw code te hoeven lezen.