Šajā apmācībā jūs uzzināsit par dažāda veida kļūdām un izņēmumiem, kas iebūvēti Python. Tie tiek izvirzīti ikreiz, kad Python tulks sastop kļūdas.
Video: Python izņēmumu apstrāde
Rakstot programmu, mēs varam pieļaut dažas kļūdas, kas rada kļūdas, mēģinot to palaist. Python programma tiek pārtraukta, tiklīdz tā saskaras ar neapstrādātu kļūdu. Šīs kļūdas kopumā var iedalīt divās klasēs:
- Sintakses kļūdas
- Loģiskās kļūdas (izņēmumi)
Python sintakses kļūdas
Kļūdu, ko izraisa valodas pareizas struktūras (sintakses) neievērošana, sauc par sintakses kļūdu vai parsēšanas kļūdu .
Apskatīsim vienu piemēru:
>>> if a < 3 File "", line 1 if a < 3 SyntaxError: invalid syntax
Kā parādīts piemērā, bulta norāda vietu, kur parsētājs nonāca sintakses kļūdā.
Mēs šeit varam pamanīt, ka paziņojumā :
trūkst resnās zarnas if
.
Python loģiskās kļūdas (izņēmumi)
Kļūdas, kas rodas izpildlaikā (pēc sintakses testa nokārtošanas) sauc par izņēmumiem vai loģiskām kļūdām .
Piemēram, tie rodas, kad mēs mēģinām atvērt failu (lasīšanai), kas neeksistē ( FileNotFoundError
), mēģinām sadalīt skaitli ar nulli ( ZeroDivisionError
) vai mēģināt importēt moduli, kas nepastāv ( ImportError
).
Ikreiz, kad rodas šāda veida izpildlaika kļūdas, Python izveido izņēmuma objektu. Ja tas netiek pareizi apstrādāts, tas izdrukā kļūdas izsekošanu, kā arī sīkāku informāciju par šīs kļūdas iemeslu.
Apskatīsim, kā Python izturas pret šīm kļūdām:
>>> 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 iebūvētie izņēmumi
Nelikumīgas darbības var radīt izņēmumus. Python ir daudz iebūvētu izņēmumu, kas tiek parādīti, kad rodas atbilstošas kļūdas. Visus iebūvētos izņēmumus, izmantojot iebūvēto local()
funkciju, mēs varam skatīt šādi:
print(dir(locals()('__builtins__')))
locals()('__builtins__')
atgriezīs iebūvēto izņēmumu, funkciju un atribūtu moduli. dir
ļauj mums uzskaitīt šos atribūtus kā virknes.
Daži no iebūvētajiem izņēmumiem Python programmēšanā kopā ar kļūdu, kas tos izraisa, ir uzskaitīti zemāk:
Izņēmums | Kļūdas cēlonis |
---|---|
AssertionError | Paaugstināts, ja assert paziņojums neizdodas. |
AttributeError | Paaugstināts, kad atribūta piešķiršana vai atsauce neizdodas. |
EOFError | Paaugstināts, kad input() funkcija nonāk faila beigu stāvoklī. |
FloatingPointError | Paaugstināts, ja peldošā komata darbība neizdodas. |
GeneratorExit | Paaugstiniet, kad close() tiek saukta ģeneratora metode. |
ImportError | Paaugstināts, kad importētais modulis nav atrasts. |
IndexError | Paaugstināts, kad secības indekss ir ārpus diapazona. |
KeyError | Paaugstināts, ja taustiņš vārdnīcā nav atrodams. |
KeyboardInterrupt | Paaugstināts, kad lietotājs nospiež pārtraukuma taustiņu ( Ctrl+C vai Delete ). |
MemoryError | Paaugstināts, kad operācijai pietrūkst atmiņas. |
NameError | Paaugstināts, ja mainīgais nav atrodams lokālā vai globālā mērogā. |
NotImplementedError | Audzina ar abstraktām metodēm. |
OSError | Paaugstināts, kad sistēmas darbība izraisa ar sistēmu saistītas kļūdas. |
OverflowError | Paaugstināts, ja aritmētiskās darbības rezultāts ir pārāk liels, lai to attēlotu. |
ReferenceError | Paaugstināts, ja vājajam atsauces starpniekserverim izmanto piekļuvi atkritumu savāktajam referentam. |
RuntimeError | Raised when an error does not fall under any other category. |
StopIteration | Raised by next() function to indicate that there is no further item to be returned by iterator. |
SyntaxError | Raised by parser when syntax error is encountered. |
IndentationError | Raised when there is incorrect indentation. |
TabError | Raised when indentation consists of inconsistent tabs and spaces. |
SystemError | Raised when interpreter detects internal error. |
SystemExit | Raised by sys.exit() function. |
TypeError | Raised when a function or operation is applied to an object of incorrect type. |
UnboundLocalError | Raised when a reference is made to a local variable in a function or method, but no value has been bound to that variable. |
UnicodeError | Raised when a Unicode-related encoding or decoding error occurs. |
UnicodeEncodeError | Raised when a Unicode-related error occurs during encoding. |
UnicodeDecodeError | Raised when a Unicode-related error occurs during decoding. |
UnicodeTranslateError | Paaugstināts, kad tulkošanas laikā rodas ar Unicode saistīta kļūda. |
ValueError | Paaugstināts, kad funkcija iegūst pareiza tipa, bet nepareizas vērtības argumentu. |
ZeroDivisionError | Paaugstināts, kad otrais dalīšanas vai modulo darbības operands ir nulle. |
Ja nepieciešams, mēs varam arī definēt savus izņēmumus Python. Lai uzzinātu vairāk par tiem, apmeklējiet Python lietotāja definētus izņēmumus.
Mēs varam apstrādāt šos iebūvēto un lietotāja definētus izņēmumus Python izmantojot try
, except
un finally
pārskatus. Lai uzzinātu vairāk par viņiem, apmeklējiet Python, izņemot un visbeidzot paziņojumus.