Ofte oppstår det unntak («exception») eller feil («error») i et program.
Disse må håndteres riktig hvis man vil være sikker på at programmet ikke avslutter brått og ødelegger for brukeren.
Et enkelt eksempel:
resultat = 10/0 # gir: 'ZeroDivisionError: division by zero'
Her forsøker man å dele på null, da vil programmet avslutte brått.
I stedet må man fange opp problemet – et eksempel:
try: resultat = 10/0 except ZeroDivisionError: print("Dele på null er tull!") # skriver ut 'Dele på null er tull!' i terminalen
Her får man i stedet en beskjed om at deling på null er tull. Programmet kan derfor fortsette å kjøre, man kan be om en ny verdi fra bruker o.s.v..
I tillegg til å fange opp problemet, kan man også ha funksjonalitet som kjører kun hvis operasjonen gikk bra.
Eksempel:
try: gjørViktigArbeid() # utfører noe meget kritisk except Error: rullTilbake() # det gikk i dass så vi fjerner alle endringer else: lagre() # Puuh, det gikk bra så vi lagrer alle endringer
Her har man løsninger for både når ting går som planlagt, og når de ikke gjør det.