På forrige side ble det håndtert en exception av type Exception, dette er ikke bra, med mindre man har dårlig tid og ikke vil gjøre ting skikkelig.
Når man skal gjøre enkle ting, så er det best å spesifisere der det lar seg gjøres. En generell Exception gjør blant annet at en bruker ikke kan lukke programmet!
defenter_a_numberinator()->int:whileTrue:try:returnint(input('Enter a number: '))exceptValueError:print('That is not a number, try again')exceptException:# Bruker har prøvd å avslutte programmet, dette er ikke lovprint('You can\'t leave, you\'re stuck here forever')n=enter_a_numberinator()print(n)
Les dokumentasjonen!
Ved å lese dokumentasjonen, eller via eksperimentering (f.eks. dra ut nettverket), kan du finne riktig exceptions å bruke.
Her er et eksempel med do_request funksjonen fra forrige side:
defdo_request(url):try:returnrequests.get(url)# HTTPError håndterer alle statuskoder mellom 400 og 599exceptrequests.exceptions.HTTPError:returndo_request(url)# ConnectionError håndterer alle nettverksfeilexceptrequests.exceptions.ConnectionError:returndo_request(url)# Timeout håndterer alle timeout-feilexceptrequests.exceptions.Timeout:returndo_request(url)# TooManyRedirects håndterer alle redirect-feilexceptrequests.exceptions.TooManyRedirects:returndo_request(url)# Alle andre feil, (bør unngås)# except Exception:# return do_request(url)