Treci la conținutul principal

Python Try Except

Patru blocuri lucrează împreună atunci când tratezi erori. try conține codul pe care vrei să-l testezi pentru probleme, iar except tratează eroarea dacă apare una.

else rulează doar atunci când nu s-a produs nicio eroare, în timp ce finally rulează indiferent de rezultatul blocurilor try și except.


Tratarea excepțiilor

O eroare, numită și excepție, face de obicei ca Python să se oprească și să afișeze un mesaj de eroare.

Instrucțiunea try îți permite să prinzi aceste excepții și să le tratezi singur:

Aici blocul try eșuează, așa că Python trece la blocul except.

Elimină blocul try și aceeași eroare va opri brusc programul:

Exemplu

x nu este definit, așa că blocul try se termină cu o excepție:

Prompt
Scrieți un program Python care folosește un bloc try/except. Încercați să afișați o variabilă x nedefinită și prindeți excepția.
Ieșire: program Python complet

Exemplu

Fără un try în jurul ei, această linie eșuează, deoarece x nu este definit:

Prompt
Scrieți un program Python care încearcă să afișeze o variabilă x nedefinită. Acest lucru va genera o eroare NameError.
Ieșire: program Python complet

Mai multe excepții

Un singur try poate fi urmat de oricâte blocuri except, ceea ce este util când un anumit tip de eroare are nevoie de cod special propriu:

Exemplu

Afișează un mesaj pentru o eroare NameError și un alt mesaj pentru orice altceva:

Prompt
Scrieți un program Python cu mai multe blocuri except. Încercați să afișați variabila nedefinită x, prindeți în mod specific NameError și, în general, celelalte erori.
Ieșire: program Python complet

Else

Adaugă cuvântul cheie else pentru codul care trebuie să ruleze doar atunci când blocul try nu a ridicat nicio eroare:

Exemplu

Nimic nu eșuează în acest bloc try, așa că vine rândul lui else:

Prompt
Scrieți un program Python care folosește try/except/else. Blocul try afișează „Hello” cu succes, așa că blocul else se execută.
Ieșire: program Python complet

Finally

Un bloc finally, dacă îl incluzi, rulează întotdeauna, indiferent dacă blocul try a ridicat o eroare sau nu.

De aceea este un loc bun pentru a închide obiecte și a elibera resurse:

Obiectul fișier nu rămâne deschis, iar programul poate continua liber.

Exemplu

Prompt
Scrieți un program Python care folosește try/except/finally. Încercați să afișați variabila nedefinită x, tratați excepția și folosiți finally.
Ieșire: program Python complet

Exemplu

Deschide un fișier și încearcă să scrii în el, cu tratare separată pentru fiecare pas. În această rulare, fișierul nici măcar nu a putut fi deschis:

Prompt
Scrieți un program Python care încearcă să deschidă un fișier și să scrie în el. Folosiți blocuri try/except/finally imbricate pentru a trata erorile legate de fișier și pentru a vă asigura că fișierul este închis.
Ieșire: program Python complet

Ridicarea unei excepții

Uneori, propriul tău cod trebuie să semnaleze o problemă atunci când este îndeplinită o anumită condiție. Cuvântul cheie raise face exact asta: aruncă (ridică) o excepție.

Tu decizi atât tipul erorii, cât și mesajul afișat utilizatorului.

Exemplu

Oprește programul cu o eroare atunci când x este negativ:

Prompt
Scrieți un program Python care ridică o excepție. Setați x la -1 și ridicați o excepție Exception dacă x este mai mic decât 0.
Ieșire: program Python complet

Exemplu

Ridică o eroare TypeError dacă x nu este un număr întreg:

Prompt
Scrieți un program Python care ridică o eroare TypeError. Setați x la "hello" și ridicați o eroare TypeError dacă x nu este un număr întreg.
Ieșire: program Python complet