Pythoni vead ja sisseehitatud erandid

Selles õpetuses saate teada Pythoni sisseehitatud erinevat tüüpi vigadest ja eranditest. Neid tõstetakse alati, kui Pythoni tõlk kohtab vigu.

Video: Pythoni erandkäsitlus

Saame programmi kirjutades teha teatud vigu, mis viivad vigadeni, kui proovime seda käivitada. Püütoni programm lõpetatakse kohe, kui ilmneb töötlemata viga. Need vead saab üldjoontes jagada kahte klassi:

  1. Süntaksivead
  2. Loogikavead (erandid)

Pythoni süntaksivead

Keele õige struktuuri (süntaks) mittejärgimisel tekkinud viga nimetatakse süntaksiveaks või sõelumisveaks .

Vaatame ühte näidet:

 >>> if a < 3 File "", line 1 if a < 3 SyntaxError: invalid syntax

Nagu näites näidatud, näitab nool kohta, kus parser sattus süntaksiveale.

Siinkohal võime märgata :, et ifavalduses puudub koolon .

Pythoni loogilised vead (erandid)

Käitusajal (pärast süntaksitesti läbimist) esinevaid vigu nimetatakse eranditeks või loogikavigadeks .

Näiteks ilmnevad need siis, kui proovime avada faili (lugemiseks), mida pole olemas ( FileNotFoundError), proovime numbrit jagada nulliga ( ZeroDivisionError) või importida moodulit, mida pole olemas ( ImportError).

Alati, kui seda tüüpi käitustõrkeid esineb, loob Python erandi objekti. Kui seda ei käsitleta õigesti, prindib see selle vea jälje koos üksikasjadega selle vea põhjuste kohta.

Vaatame, kuidas Python neid vigu käsitleb:

 >>> 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'

Pythoni sisseehitatud erandid

Ebaseaduslikud toimingud võivad tekitada erandeid. Pythonis on palju sisseehitatud erandeid, mis tekivad vastavate vigade ilmnemisel. Kõiki sisseehitatud erandeid saab sisseehitatud local()funktsiooni abil vaadata järgmiselt:

 print(dir(locals()('__builtins__')))

locals()('__builtins__')tagastab sisseehitatud erandite, funktsioonide ja atribuutide mooduli. dirvõimaldab meil need atribuudid stringidena loetleda.

Allpool on loetletud mõned Pythoni programmeerimisel levinud sisseehitatud erandid koos neid põhjustava veaga:

Erand Vea põhjus
AssertionError Tõstatatud, kui mõni assertavaldus ebaõnnestub.
AttributeError Tõstetakse, kui atribuudi määramine või viide ebaõnnestub.
EOFError Tõstetakse, kui input()funktsioon tabab faili lõpu seisukorda.
FloatingPointError Tõstetakse üles, kui ujukomaoperatsioon nurjub.
GeneratorExit Tõstke, kui close()kutsutakse generaatori meetodit.
ImportError Tõstetakse, kui imporditud moodulit ei leita.
IndexError Tõstetakse, kui jada indeks on vahemikust väljas.
KeyError Tõstetakse, kui võtit sõnastikust ei leia.
KeyboardInterrupt Tõstetakse, kui kasutaja vajutab katkestusklahvi ( Ctrl+Cvõi Delete).
MemoryError Tõstetakse, kui operatsiooni mälu saab otsa.
NameError Tõstetakse siis, kui muutujat ei leidu kohalikus ega globaalses ulatuses.
NotImplementedError Kasvatatud abstraktsete meetoditega.
OSError Tõstetakse, kui süsteemi töö põhjustab süsteemiga seotud tõrke.
OverflowError Tõstetakse, kui aritmeetilise operatsiooni tulemus on esitamiseks liiga suur.
ReferenceError Tõstetakse üles, kui prügikogutud referendile juurdepääsemiseks kasutatakse nõrka võrdlusproksi.
RuntimeError Tõstetakse siis, kui viga ei kuulu ühegi teise kategooria alla.
StopIteration next()Funktsiooni järgi tõstetud, et iteraator ei tagastaks enam ühtegi üksust.
SyntaxError Parseri poolt tõstatatud, kui ilmneb süntaksiviga.
IndentationError Tõstetakse siis, kui on vale taande.
TabError Tõstetakse üles, kui taane koosneb vastuolulistest vahelehtedest ja tühikutest.
SystemError Tõstetakse, kui tõlk tuvastab sisemise vea.
SystemExit sys.exit()Funktsiooni järgi tõstetud .
TypeError Tõstetakse üles, kui vale tüüpi objektile rakendatakse funktsiooni või toimingut.
UnboundLocalError Tõstetakse, kui funktsioonis või meetodis viidatakse kohalikule muutujale, kuid selle muutujaga pole seotud ühtegi väärtust.
UnicodeError Tõstetakse, kui ilmneb Unicode'iga seotud kodeerimis- või dekodeerimisviga.
UnicodeEncodeError Tõstatatakse, kui kodeerimisel ilmneb Unicode'iga seotud tõrge.
UnicodeDecodeError Tõstatatakse, kui dekodeerimise ajal ilmneb Unicode'iga seotud tõrge.
UnicodeTranslateError Tõstatatakse, kui tõlkimisel ilmneb Unicode'iga seotud tõrge.
ValueError Tõstetakse üles, kui funktsioon saab õiget tüüpi, kuid vale väärtusega argumendi.
ZeroDivisionError Tõstetakse, kui jagamise või modulo operatsiooni teine ​​operand on null.

Vajadusel saame Pythonis määratleda ka oma erandid. Nende kohta lisateabe saamiseks külastage Pythoni kasutaja määratletud erandeid.

Saame hakkama neid sisse ehitatud ja kasutaja määratletud erandeid Python kasutades try, exceptja finallyavaldused. Nende kohta lisateabe saamiseks külastage Pythoni proovimist, välja arvatud ja lõpuks avaldused.

Huvitavad Artiklid...