Gå til innhold

3. Ulike feil, ulik håndtering

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.

def do_request(url, attempts=0):
    if attempts > 5:
        raise RuntimeError('Too many attempts')
    try:
        return requests.get(url)
    except requests.exceptions.HTTPError as e:
        print(f'HTTPError: {e}')
        raise RuntimeError('Denne ressursen får vi ikke tilgang til')
    except (requests.exceptions.ConnectionError,
            requests.exceptions.Timeout,
            requests.exceptions.TooManyRedirects) as e:
        print(f'Retrying in 10s, attempts={attempts} ({e}) ')
        time.sleep(10)
        return do_request(url, attempts + 1)

1 år siden 1 år siden GitHub Sondre Grønås