Noen feil bør kanskje håndteres annerledes, hvis vi får feilmelding som sier at vi er nektet tilgang, så er det ikke noe vits å prøve på ny (med mindre vi forventet å ha tilgang).
I dette eksempelet vil RuntimeError avslutte koden, men det kunne like så godt ha vist en feilmelding i en logg og kjørt videre.
defdo_request(url,attempts=0):ifattempts>5:raiseRuntimeError('Too many attempts')try:returnrequests.get(url)exceptrequests.exceptions.HTTPErrorase:print(f'HTTPError: {e}')raiseRuntimeError('Denne ressursen får vi ikke tilgang til')except(requests.exceptions.ConnectionError,requests.exceptions.Timeout,requests.exceptions.TooManyRedirects)ase:print(f'Retrying in 10s, attempts={attempts} ({e}) ')time.sleep(10)returndo_request(url,attempts+1)