目次
1. Sissejuhatus: Erandite käsitlemise olulisus Pythonis
Programmeerimises on erandid ja vead vältimatud. Kuid kui neid õigesti käsitleda, saab vältida programmi ootamatut seiskumist ning pakkuda kasutajale arusaadavaid veateateid. Python pakub tugevaid mehhanisme erandite töötlemiseks. Kasutades erandite käsitlemist, muutub programm töökindlamaks ja töötab sujuvamalt. Näiteks, kui kasutaja püüab jagada nulliga või avada faili, mida ei eksisteeri, lõpetaks programm kohe töö, kui erandite käsitlemist poleks. Kuid õigesti rakendatud erandite käsitlemine võimaldab programmil jätkata või kuvada kasutajale selgeid veateateid.2. Erandite käsitlemine Pythonis: põhisüntaks ja töövoog
Pythonis kasutatakse erandite käsitlemiseks peamiselt kolme võtmesõna:try
, except
ja finally
.2.1 Vigade avastamine try
-lausega
try
-lausega ümbritsetakse kood, kus võib tekkida viga. See hõlmab näiteks võrguoperatsioone, failitöötlust või kasutajasisestusi, kus võib jooksuajal vigu esineda.try:
result = 10 / 0
except:
print("Tekkis viga")
Ülaltoodud näites tekitab 10 / 0
erandi ning except
-plokk käivitatakse.2.2 Vigade töötlemine except
-lausega
except
-lause püüab erandi ja töötleb seda. See hoiab ära programmi ootamatu käitumise. Iga erandi tüübi jaoks saab määrata erineva töötlemise loogika.try:
print(a)
except NameError:
print("Muutuja pole määratletud")
except ZeroDivisionError:
print("Nulliga ei saa jagada")
Nii saab mitme erineva erandi jaoks määrata eraldi käsitluse.2.3 Ressursside vabastamine finally
-lausega
finally
-plokk käivitatakse alati – sõltumata sellest, kas erand tekkis või mitte. Seda kasutatakse näiteks failide või võrguühenduste sulgemiseks, et ressursid kindlasti vabastataks.try:
file = open("test.txt", "r")
finally:
file.close()
Sellistes olukordades, kus on vaja tagada ressursside korrektne haldus, on finally
väga kasulik.
3. Levinumad erandid ja nende käsitlemine
Pythonis on olemas palju erinevaid erandeid. Siin on mõned näited:3.1 NameError
: määratlemata muutuja kasutamine
NameError
tekib, kui viidatakse muutujale, mida pole määratletud.try:
print(a)
except NameError:
print("Muutuja pole määratletud")
3.2 TypeError
: erinevate tüüpide sobimatu kasutamine
TypeError
tekib, kui tehakse sobimatu operatsioon erinevate andmetüüpide vahel.try:
result = '10' + 5
except TypeError:
print("Proovisid kasutada sobimatuid andmetüüpe")
3.3 ValueError
: sobimatu väärtus
ValueError
tekib, kui antakse funktsioonile sobimatu väärtus, näiteks kui üritatakse muuta teksti täisarvuks.try:
number = int("abc")
except ValueError:
print("Edastatud väärtus on sobimatu")
4. Mitme erandi käsitlemine
Pythonis saab ühestry
-plokis püüda mitu erandit. Samuti saab neid töödelda kas eraldi või üheskoos.4.1 Mitme erandi eraldi käsitlemine
try:
result = 10 / 0
except ZeroDivisionError:
print("Nulliga ei saa jagada")
except NameError:
print("Muutuja pole määratletud")
4.2 Mitme erandi koos käsitlemine
try:
result = 10 / '10'
except (ZeroDivisionError, TypeError):
print("Tekkis sobimatu operatsioon")
See võimaldab hoida koodi lihtsamana, kui erinevad erandid vajavad sama töötlemist.
5. Kasutaja määratletud erandid ja raise
-lause kasutamine
Kui sisseehitatud erandid ei kata kõiki olukordi, saab luua oma erandi ja seda tahtlikult raise
-lausega esile kutsuda.5.1 Kohandatud erandi käivitamine raise
-ga
Näiteks saab luua erandi, mis keelab negatiivsed väärtused:def check_value(value):
if value < 0:
raise ValueError("Negatiivsed väärtused pole lubatud")
return value
try:
check_value(-10)
except ValueError as e:
print(e)
6. Kokkuvõte ja parimad tavad
Erandite käsitlemine on hädavajalik Pythonis usaldusväärsete ja turvaliste programmide loomiseks. Siin on mõned soovitused:- Püüa konkreetseid erandeid: määra võimalusel kindlad eranditüübid, mitte ära kasuta üldist
Exception
. - Halda ressursse õigesti: sulge failid ja võrguühendused alati
finally
-plokis. - Selged veateated: esita kasutajale arusaadavad veateated ja võimalusel lahenduse viide.