Įvadas į išimtines situacijas Python kalboje
Šiame skyriuje bus nagrinėjamos išimtinės situacijos Python kalboje. Pirmiausia reikia suprasti, kas jos iš esmės yra.
Kuriant bet kurią programą, programuotojas netiesiogiai tikisi, kad visi naudojami programiniai-techniniai mechanizmai veiks korektiškai.
Tačiau taip būna ne visada. Perduodant duomenis per tinklą, atsiranda ryšio nutrūkimas ir duomenys mums ateina nekorektiškos formos, arba visai neateina. Rašant failą paaiškėja, kad mums skirta vieta kietajame diske baigėsi, ir failas negali būti įrašytas. Skaitant failą paaiškėja, kad tokio failo nėra ir mums nėra iš ko skaityti. Spausdinant duomenis spausdintuve atsiranda laido, jungiančio spausdintuvą ir kompiuterį, nutrūkimas.
Visos aprašytos situacijos turi bendrą esmę: įvyksta tam tikras sutrikimas, kuris sukelia planuotos operacijos užbaigimo neįmanomumą arba beprasmybę.
Būna ir situacijų, kuriose įvyksta tam tikra klaida, nėra sutrikimas. Pavyzdžiui, jūs klausiate vartotojo jo el. pašto, ir jis įveda el. paštą nekorektiškame formate. Suprantama, kad mūsų programa negali tęsti el. pašto apdorojimo, nes jis yra nekorektiškas. Tačiau, vis dėlto tai - ne išimtinė situacija. Mūsų programa gali pati išspręsti situaciją: ji išves klaidos pranešimą ir vartotojas pakartos savo įvedimą.
Tiesą sakant, skirtumas tarp sutrikimo ir ne sutrikimo yra gana neaiškus. Įvykis, kurį viena programa gali traktuoti kaip išimtinę situaciją, kita programa gali traktuoti kaip tam tikrą klaidą, su kuria ji gali susitvarkyti.
Kriterijus čia toks: jei iškilus problemai jūsų programa gali tęsti vykdyti tai, kam ji skirta, tai tai nėra išimtinė situacija, o jei negali - tai taip, tai yra išimtis.
Pavyzdžiui, mes turime programą, kuri turi paklausti vartotojo el. pašto. Jei vartotojas įvedė el. paštą nekorektiškame formate - tai nėra sutrikimas. Tai tikėtina problema ir mūsų programa klaus vartotojo el. pašto tiek kartų, kiek jis jo nekorektiškai neįves.
Tarkime, mūsų programa, kuri klausia el. pašto, taip pat turi išsiųsti šį korektišką el. paštą per internetą. Tuo tarpu paaiškėja, kad internetas neveikia. Štai tai jau problema: programa jokiu būdu negali išsiųsti duomenų per internetą, jei internetas neveikia. Programa, vis dėlto, gali tęsti savo vykdymą: ji gali išvesti informaciją apie problemą, pakartoti siuntimo bandymą po kurio laiko, ir taip toliau. Tačiau šie veiksmai jau ne visai tai, kam programa buvo skirta, kadangi pagrindinio veiksmo - el. pašto siuntimo - programa padaryti negalės.
Iš to seka, kad labai dažnai traktuojama, koks elgesys bus laikomas normaliu, o koks išimtiniu, priklauso nuo uždavinių, su kuriais susiduria programuotojas.