Python spausdinimo išimtis
Išimtis – tai netikėtas įvykis, įvykęs programos vykdymo metu. Tai taip pat žinoma kaip veikimo laiko klaida. Kai įvyksta ši klaida, „Python“ vykdymo metu sukuria išimtį, kurią galima apdoroti, o tai neleidžia jūsų programai pertraukti. Šiame straipsnyje mes sutelksime dėmesį į „Kaip galime atspausdinti išimtį Python“?
Kas yra Python išimtis?
Į Python , Išimtis yra programos klaida. Klaida vadinama išimtimi, kai programa sintaksiškai teisinga, tačiau ją vykdant įvyksta klaida.
Pavyzdys : Pavyzdyje bandome skaičių padalyti iš nulio, kad būtų pateikta vykdymo klaida.
Python3
num1> => 5> num2> => 0> print> (num1> /> num2)> |
Išvestis
Traceback (most recent call last): File 'Solution.py', line 5, in print(num1 / num2) ZeroDivisionError : division by zero
Ši programa yra sintaksiškai teisinga . Vienintelė problema čia yra dėl numerių, kurie naudojami operacijai. Kadangi negalime padalyti nė vieno skaičiaus iš 0, tai pateikia klaidą. Taigi, tai yra „išimties“ pavyzdys.
Kaip atrodo išimtys?
Aukščiau pateiktoje programoje, kai ją vykdėme, gavome išimtį. Išmesta klaida parodė eilutę, kurioje įvyko klaida, tikslią eilutę ir klaidos tipą.
Parodytas klaidos tipas vadinamas „išimtimi“. Išimčių pagalba sužinome apie iškilusią problemą. Išimtis aukščiau pateiktoje programoje yra ZeroDivisionError: padalijimas iš nulio .
Pavyzdys : Čia kintamojo var1 priskyrimą atlieka an Nenurodytas kintamasis , var2.
Python3
var1> => var2> |
Išvestis
Traceback (most recent call last): File 'Solution.py', line 2, in var1 = var2 NameError: name 'var2' is not defined
Aukščiau matome Išimtį kaip NameError: pavadinimas „var2“ neapibrėžtas .
Išimčių tvarkymas Python
Išimtys kartais gali būti labai varginančios. Štai čia atsiranda išimčių tvarkymo koncepcija. Išimčių tvarkymas leidžia lengvai tvarkyti išimtis vartotojui, o ne tiesiog suklaidinti vartotoją.
Pavyzdys : Šioje programoje įvestis paimama „int“ tipu. Bet jei įvesime simbolį, jis parodys „ValueError“. Tai gali daug kartų suklaidinti vartotoją. Štai kur atliekame išimčių tvarkymą. Užuot įmetę vertės klaidą ir suklaidinę vartotoją, parodysime teiginį, siūlantį vartotojui pabandyti dar kartą, ir suteiksime galimybę vartotojui dar kartą pabandyti įvesti skaičius.
Python3
num1> => int> (> input> (> 'Enter num1: '> ))> num2> => int> (> input> (> 'Enter num2: '> ))> answer> => f> '{num1} / {num2} = {num1 / num2}'> print> (answer)> |
Išvestis
Enter num1: 1 Enter num2: b Traceback (most recent call last): File 'D:/PycharmProjects/pythonProject2/main.py', line 15, in num2 = int(input('Enter num2: ')) ValueError: invalid literal for int() with base 10: 'b' Naudojant try, išskyrus ir kitur
Šiame kode paleidžiama while ciklas, nes norime leisti vartotojui pabandyti, kol įvestis bus pateikta teisingu būdu. Naudojome sąlygą „bandyti“. Išbandymo sąlyga tikrina, ar to sakinio eilutėse nėra klaidų.
Jei aptinkama išimtis, ji pereina prie išlygos „išskyrus“ ir išspausdina mūsų pateiktą klaidos pranešimą. Mes parašėme du, išskyrus sąlygas, vieną su ValueError, o kitą su ZeroDivisionError. Kiekviena iš šių punktų susijusi su atitinkamomis išimtimis ir išspausdina atitinkamus pranešimus.
Galiausiai, parašėme kitą sąlygą. Jei klaida neaptinkama, vykdomas kitas blokas. Kitame bloke atspausdiname padalijimo koeficientą ir ištraukiame iš kilpos.
Python3
while> True> :> > try> :> > num1> => int> (> input> (> 'Enter num1: '> ))> > num2> => int> (> input> (> 'Enter num2: '> ))> > answer> => f> '{num1} / {num2} = {num1 / num2}'> > except> ValueError as e:> > print> (> 'Try putting an integer value.
Error Occured:'> , e)> > except> ZeroDivisionError as ex:> > print> (> 'Division by zero is invalid!
Error Occured:'> , ex)> > else> :> > print> (answer)> > break> |
Išvestis:
Spausdinimo išimtys
Kadangi matėme, kokios tiksliai yra išimtys, kaip jos atrodo ir kaip su jomis elgtis, dabar pažvelgsime į jų spausdinimą.
Norėdami spausdinti išimtis, naudojame 'kaip' Python raktažodis.
Naudojome tą patį pavyzdį, kurį naudojome anksčiau. Mes panaudojome raktinį žodį „as“ ir paskelbėme kintamąjį „ve“ „ValueError“ ir „zde“ – „ZeroDivisionError“. Tada, jei susiduriame su kokiomis nors išimtimis, parašėme kodą, kad išspausdintume tą išimtį. Tačiau vis tiek nematome gautos išimties tipo.
Python3
while> True> :> > try> :> > num1> => int> (> input> (> 'Enter num1: '> ))> > num2> => int> (> input> (> 'Enter num2: '> ))> > answer> => f> '{num1} / {num2} = {num1 / num2}'> > except> ValueError as ve:> > print> (ve)> > except> ZeroDivisionError as zde:> > print> (zde)> > else> :> > print> (answer)> > break> |
Išvestis:
Enter num1: a invalid literal for int() with base 10: 'a' Enter num1: 0 Enter num2: 0 division by zero Enter num1: 16 Enter num2: 4 16 / 4 = 4.0
Spausdinimo išimties tipas
Norėdami pamatyti išimties tipą, galime naudoti funkciją type().
Čia mes panaudojome type() funkciją, kad sužinotume, su kokio tipo išimtimi susidūrėme vykdydami kodą.
Python3
while> True> :> > try> :> > num1> => int> (> input> (> 'Enter num1: '> ))> > num2> => int> (> input> (> 'Enter num2: '> ))> > answer> => f> '{num1} / {num2} = {num1 / num2}'> > except> ValueError as ve:> > print> (> type> (ve), ve)> > except> ZeroDivisionError as zde:> > print> (> type> (zde), zde)> > else> :> > print> (answer)> > break> |
Išvestis
Enter num1: a invalid literal for int() with base 10: 'a' Enter num1: 1 Enter num2: 0 division by zero Enter num1: 4 Enter num2: 2 4 / 2 = 2.0