Uitzonderingen afvangen in Python
In Python, vergeleken met andere programmeertalen, zijn er erg veel situaties die uitzonderingen veroorzaken.
Laten we ze in meer detail bekijken. Stel we hebben een lijst:
lst = [1, 2, 3]
Laten we proberen een niet-bestaand element van de lijst te benaderen:
print(lts[4])
Na het uitvoeren van de code wordt een foutmelding (een uitzondering) getoond:
IndexError: list index out of range
Als we echter door willen gaan zonder
de uitzondering te tonen, moeten we deze vangen met
behulp van de try-except constructie. Deze
heeft de volgende syntaxis:
try:
# code die een uitzondering kan veroorzaken
except:
# afhandeling van de fout
In het try blok moet je code plaatsen
die een uitzondering kan bevatten. Als
er tijdens de uitvoering van deze code een
uitzonderingssituatie optreedt, dan stopt de uitvoering
niet, maar gaat deze verder met de code in het
except blok. In dit blok moet je
een bericht tonen dat de essentie van de opgetreden fout
zo nauwkeurig mogelijk beschrijft.
Als er tijdens de uitvoering van het try blok
geen uitzonderingssituaties optreden,
dan wordt de nuttige code gewoon uitgevoerd, en de code
uit het except blok niet.
Laten we onze uitzondering bij het benaderen
van een niet-bestaand lijstelement afvangen. Hiervoor
plaatsen we in het try blok de code met
de potentiële fout. En in het except blok
geven we aan dat het bericht 'error:
elem is not exist' naar de console moet worden uitgevoerd:
lst = [1, 2, 3]
try:
print(lst[4])
except:
print('error: elem is not exist')
Na het uitvoeren van de code wordt het volgende getoond:
'error: elem is not exist'
Na het bestuderen van de try-except constructie
moet de stijl van de code die je schrijft veranderen.
Alle plaatsen waar een uitzonderingssituatie
kan optreden, moet je nu wrappen in
try, en in het except blok
de reactie op deze uitzondering beschrijven.
Vraag de gebruiker om twee getallen. Deel het ene door het andere. Vang de uitzonderingssituatie van delen door nul af.
Vraag de gebruiker om een getal. Bereken de vierkantswortel van dit getal. Vang de uitzonderingssituatie af van het trekken van een wortel uit een negatief getal.
Gegeven een lijst. Vraag de gebruiker om een geheel getal. Krijg het lijstelement waarvan het nummer door de gebruiker is ingevoerd. Vang de uitzonderingssituatie af die optreedt als de gebruiker een getal buiten het bereik van de lijst heeft ingevoerd.
Gegeven de volgende code:
num = '5'
res = num + 2
print(res)
Wat is er mis met deze code? Verbeter de tekortkomingen.
Gegeven de volgende code:
lst = [1, 2, 3, 4]
def getElem(iter):
print(iter[4])
getElem(lst)
Wat is er mis met deze code? Verbeter de tekortkomingen.