Python kļūdas un iebūvētie izņēmumi

Š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:

  1. Sintakses kļūdas
  2. 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 assertpaziņ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+Cvai 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, exceptun finallypārskatus. Lai uzzinātu vairāk par viņiem, apmeklējiet Python, izņemot un visbeidzot paziņojumus.

Interesanti raksti...