Undantagshantering i Python
I Python jämfört med andra programmeringsspråk finns det många situationer som orsakar undantag.
Låt oss titta närmare på dem. Låt oss säga att vi har en lista:
lst = [1, 2, 3]
Låt oss försöka komma åt ett element i listan som inte finns:
print(lts[4])
Efter att koden har körts kommer ett fel (undantag) att visas:
IndexError: list index out of range
Om vi däremot behöver fortsätta arbeta utan
att visa undantaget, bör vi fånga det
med konstruktionen try-except. Den
har följande syntax:
try:
# kod som kan orsaka ett undantag
except:
# felhantering
I try-blocket ska du placera kod
som kan innehålla ett undantag. Om
det under körningen av denna kod uppstår ett
undantag, kommer exekveringen
av koden inte att stoppas, utan att gå vidare till koden i
except-blocket. I detta block ska du
skriva ut ett meddelande som så exakt som möjligt
beskriver innebörden av felet som uppstod.
Om inga undantagssituationer uppstod
när try-blocket kördes,
kommer den användbara koden bara att köras, medan koden
från except-blocket inte kommer att köras.
Låt oss fånga vårt undantag när vi försöker komma åt
ett element i listan som inte finns. För
att göra detta placerar vi koden med
det potentiella felet i try-blocket.
Och i except-blocket
anger vi utskrift till konsolen av meddelandet 'error:
elem is not exist':
lst = [1, 2, 3]
try:
print(lst[4])
except:
print('error: elem is not exist')
Efter att koden har körts kommer följande att visas:
'error: elem is not exist'
Efter att ha studerat konstruktionen try-except
bör stilen i din kod förändras.
Nu måste alla platser där en undantagssituation kan uppstå
lindas in i try, och i except-blocket
skriva hur du hanterar detta undantag.
Be användaren om två tal. Dividera det ena med det andra. Fånga undantagssituationen division med noll.
Be användaren om ett tal. Ta kvadratroten ur detta tal. Fånga undantagssituationen när man tar roten ur ett negativt tal.
En lista är given. Be användaren om ett heltal. Hämta elementet i listan med det index som användaren angav. Fånga undantagssituationen som uppstår om användaren angav ett tal utanför listans indexintervall.
Följande kod är given:
num = '5'
res = num + 2
print(res)
Vad är fel med denna kod? Åtgärda dess brister.
Följande kod är given:
lst = [1, 2, 3, 4]
def getElem(iter):
print(iter[4])
getElem(lst)
Vad är fel med denna kod? Åtgärda dess brister.