Šioje pamokoje sužinosite apie įvairias klaidas ir išimtis, kurios yra įmontuotos „Python“. Jie iškeliami, kai „Python“ vertėjas susiduria su klaidomis.
Vaizdo įrašas: „Python“ išimčių tvarkymas
Rašydami programą galime padaryti tam tikrų klaidų, kurios sukelia klaidų, kai bandome ją paleisti. „Python“ programa nutraukiama, kai tik aptinka neapdorotą klaidą. Šias klaidas galima suskirstyti į dvi klases:
- Sintaksės klaidos
- Loginės klaidos (išimtys)
„Python“ sintaksės klaidos
Klaida, atsiradusi nesilaikant tinkamos kalbos struktūros (sintaksės), vadinama sintaksės klaida arba analizavimo klaida .
Pažvelkime į vieną pavyzdį:
>>> if a < 3 File "", line 1 if a < 3 SyntaxError: invalid syntax
Kaip parodyta pavyzdyje, rodyklė rodo, kur analizatorius pateko į sintaksės klaidą.
Čia galime pastebėti :
, kad if
pareiškime trūksta dvitaškio .
„Python“ loginės klaidos (išimtys)
Klaidos, įvykusios vykdymo metu (išlaikius sintaksės testą), vadinamos išimtimis arba loginėmis klaidomis .
Pavyzdžiui, jie atsiranda, kai bandome atidaryti failą (skaityti), kurio nėra ( FileNotFoundError
), bandome skaičių padalyti iš nulio ( ZeroDivisionError
) arba bandome importuoti neegzistuojantį modulį ( ImportError
).
Kai įvyksta tokio tipo vykdymo laiko klaidos, „Python“ sukuria išimties objektą. Jei elgiamasi netinkamai, tai atspausdina tos klaidos atsekamąjį ryšį ir išsamią informaciją, kodėl ta klaida įvyko.
Pažvelkime, kaip „Python“ traktuoja šias klaidas:
>>> 1 / 0 Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in ZeroDivisionError: division by zero >>> open("imaginary.txt") Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in FileNotFoundError: (Errno 2) No such file or directory: 'imaginary.txt'
„Python“ integruotos išimtys
Neteisėtos operacijos gali sukelti išimčių. „Python“ yra daugybė integruotų išimčių, kurios iškyla įvykus atitinkamoms klaidoms. Mes galime peržiūrėti visas įmontuotas išimtis naudodami integruotą local()
funkciją taip:
print(dir(locals()('__builtins__')))
locals()('__builtins__')
grąžins įmontuotų išimčių, funkcijų ir atributų modulį. dir
leidžia mums išvardyti šiuos atributus kaip eilutes.
Kai kurios įprastos „Python“ programavimo integruotos išimtys kartu su klaidomis, kurios jas sukelia, yra išvardytos toliau:
Išimtis | Klaidos priežastis |
---|---|
AssertionError | Pakeltas, kai assert pareiškimas nepavyksta. |
AttributeError | Pakeliama, kai atributo priskyrimas ar nuoroda nepavyksta. |
EOFError | Pakeliama, kai input() funkcija pasiekia failo pabaigos sąlygą. |
FloatingPointError | Paaukštinta, kai slankiojo kablelio operacija nepavyksta. |
GeneratorExit | Pakelkite, kai close() bus vadinamas generatoriaus metodas. |
ImportError | Pakeliama, kai importuoto modulio nerandama. |
IndexError | Pakeliama, kai sekos indeksas yra už diapazono ribų. |
KeyError | Pakeliama, kai raktinio žodžio nerandama. |
KeyboardInterrupt | Pakeliama, kai vartotojas paspaudžia pertraukimo klavišą ( Ctrl+C arba Delete ). |
MemoryError | Pakeltas, kai operacijai trūksta atminties. |
NameError | Pakeltas, kai kintamasis nerandamas vietiniu ar pasauliniu mastu. |
NotImplementedError | Iškelta abstrakčiais metodais. |
OSError | Pakeliama, kai sistemos veikimas sukelia su sistema susijusių klaidų. |
OverflowError | Pakeliama, kai aritmetinės operacijos rezultatas yra per didelis, kad būtų galima pateikti. |
ReferenceError | Pakeltas, kai norint pasiekti šiukšlių surinktą referentą naudojamas silpnas nuorodos tarpinis serveris. |
RuntimeError | Pakeliama, kai klaida nepriklauso jokiai kitai kategorijai. |
StopIteration | Pakelta pagal next() funkciją, kad būtų rodoma, jog daugiau elementų, kuriuos turi grąžinti iteratorius, nėra. |
SyntaxError | Iškėlė analizatorius, kai įvyksta sintaksės klaida. |
IndentationError | Pakeliama, kai yra neteisinga įtrauka. |
TabError | Pakeliama, kai įtrauka susideda iš nenuoseklių skirtukų ir tarpų. |
SystemError | Pakeliama, kai vertėjas aptinka vidinę klaidą. |
SystemExit | Pakelta pagal sys.exit() funkciją. |
TypeError | Pakeliama, kai netinkamo tipo objektui taikoma funkcija ar operacija. |
UnboundLocalError | Pakeliama, kai funkcijoje ar metode pateikiama nuoroda į vietinį kintamąjį, tačiau jokia reikšmė nebuvo susieta su šiuo kintamuoju. |
UnicodeError | Pakeliama, kai įvyksta su „Unicode“ susijusi kodavimo ar dekodavimo klaida. |
UnicodeEncodeError | Pakeltas, kai koduojant įvyksta su „Unicode“ susijusi klaida. |
UnicodeDecodeError | Pakeliama, kai dekoduojant įvyksta su „Unicode“ susijusi klaida. |
UnicodeTranslateError | Pakeltas, kai verčiant įvyksta su „Unicode“ susijusi klaida. |
ValueError | Pakelta, kai funkcija gauna teisingo tipo, bet netinkamos vertės argumentą. |
ZeroDivisionError | Pakeliama, kai antrasis dalybos arba modulo operacijos operandas yra lygus nuliui. |
Jei reikia, „Python“ taip pat galime apibrėžti savo išimtis. Norėdami sužinoti daugiau apie juos, apsilankykite „Python“ vartotojo nustatytose išimtyse.
Mes galime valdyti šiuos Įmontuoti ir user-defined išimtis Python naudojant try
, except
ir finally
pareiškimus. Norėdami sužinoti daugiau apie juos, apsilankykite „Python“ bandymo, išskyrus ir galiausiai, teiginiuose.