Erori Python și excepții încorporate

În acest tutorial, veți afla despre diferite tipuri de erori și excepții care sunt încorporate în Python. Ele sunt ridicate ori de câte ori interpretul Python întâlnește erori.

Video: gestionarea excepțiilor Python

Putem face anumite greșeli în timp ce scriem un program care duc la erori atunci când încercăm să-l rulăm. Un program python se termină de îndată ce întâlnește o eroare nesoluționată. Aceste erori pot fi clasificate în general în două clase:

  1. Erori de sintaxă
  2. Erori logice (excepții)

Erori de sintaxă Python

Eroarea cauzată de nerespectarea structurii (sintaxei) corespunzătoare a limbajului se numește eroare de sintaxă sau eroare de analiză .

Să vedem un exemplu:

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

Așa cum se arată în exemplu, o săgeată indică locul în care parserul a lovit eroarea de sintaxă.

Putem observa aici că :lipsesc două puncte în ifdeclarație.

Erori logice Python (excepții)

Erorile care apar în timpul rulării (după trecerea testului de sintaxă) se numesc excepții sau erori logice .

De exemplu, acestea apar atunci când încercăm să deschidem un fișier (pentru citire) care nu există ( FileNotFoundError), încercăm să împărțim un număr la zero ( ZeroDivisionError) sau încercăm să importăm un modul care nu există ( ImportError).

Ori de câte ori apar aceste tipuri de erori de execuție, Python creează un obiect de excepție. Dacă nu este tratat corespunzător, imprimă un traceback la acea eroare împreună cu câteva detalii despre motivul pentru care a apărut acea eroare.

Să vedem cum tratează Python aceste erori:

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

Excepții încorporate Python

Operațiunile ilegale pot ridica excepții. Există o mulțime de excepții încorporate în Python care sunt ridicate atunci când apar erori corespunzătoare. Putem vizualiza toate excepțiile încorporate folosind funcția încorporată local()după cum urmează:

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

locals()('__builtins__')va returna un modul de excepții, funcții și atribute încorporate. dirne permite să listăm aceste atribute ca șiruri.

Unele dintre excepțiile obișnuite încorporate în programarea Python împreună cu eroarea care le provoacă sunt enumerate mai jos:

Excepție Cauza erorii
AssertionError Ridicat atunci când o assertdeclarație eșuează.
AttributeError Ridicat atunci când atribuirea atributului sau referința eșuează.
EOFError Ridicat când input()funcția atinge starea de sfârșit de fișier.
FloatingPointError Crește când eșuează o operație în virgulă mobilă.
GeneratorExit Creșteți atunci când close()se apelează metoda unui generator .
ImportError Ridicat când modulul importat nu este găsit.
IndexError Ridicat când indicele unei secvențe este în afara intervalului.
KeyError Ridicat când o cheie nu este găsită într-un dicționar.
KeyboardInterrupt Ridicat când utilizatorul apasă tasta de întrerupere ( Ctrl+Csau Delete).
MemoryError Ridicat când o operație rămâne fără memorie.
NameError Ridicat când o variabilă nu se găsește în domeniul local sau global.
NotImplementedError Crescut prin metode abstracte.
OSError Ridicat când funcționarea sistemului cauzează erori legate de sistem.
OverflowError Ridicat atunci când rezultatul unei operații aritmetice este prea mare pentru a fi reprezentat.
ReferenceError Ridicat atunci când un proxy de referință slab este utilizat pentru a accesa un referent colectat gunoi.
RuntimeError Apare atunci când o eroare nu se încadrează în nicio altă categorie.
StopIteration Ridicat de next()funcție pentru a indica faptul că nu mai există niciun element care să fie returnat de către iterator.
SyntaxError Ridicat de analizor atunci când se întâlnește o eroare de sintaxă.
IndentationError Ridicat atunci când există indentare incorectă.
TabError Ridicat când indentarea constă din file și spații inconsistente.
SystemError Ridicat când interpretul detectează erori interne.
SystemExit Ridicat de sys.exit()funcție.
TypeError Ridicat atunci când se aplică o funcție sau o operație unui obiect de tip incorect.
UnboundLocalError Ridicat atunci când se face referire la o variabilă locală într-o funcție sau metodă, dar nicio valoare nu a fost legată de acea variabilă.
UnicodeError Apare atunci când apare o eroare de codificare sau decodare legată de Unicode.
UnicodeEncodeError Apare atunci când apare o eroare legată de Unicode în timpul codării.
UnicodeDecodeError Apare atunci când apare o eroare legată de Unicode în timpul decodării.
UnicodeTranslateError Apare atunci când apare o eroare legată de Unicode în timpul traducerii.
ValueError Ridicat atunci când o funcție primește un argument de tip corect, dar valoare necorespunzătoare.
ZeroDivisionError Ridicat atunci când al doilea operand de diviziune sau operație modulo este zero.

Dacă este necesar, putem defini și propriile noastre excepții în Python. Pentru a afla mai multe despre acestea, accesați Excepțiile definite de utilizator Python.

Putem gestiona aceste excepții încorporate și definite de utilizator în Python folosind try, exceptși finallyinstrucțiuni. Pentru a afla mai multe despre ele, accesați Python try, exceptând și în cele din urmă declarațiile.

Articole interesante...