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:
Ieșire: program Python complet
try:
print(x)
except:
print("A apărut o excepție")
Exemplu
Fără un try în jurul ei, această linie eșuează, deoarece x nu este definit:
Ieșire: program Python complet
print(x)
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:
Ieșire: program Python complet
try:
print(x)
except NameError:
print("Variabila x nu este definită")
except:
print("Altceva nu a mers bine")
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:
Ieșire: program Python complet
try:
print("Hello")
except:
print("Ceva nu a mers bine")
else:
print("Totul a mers bine")
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
Ieșire: program Python complet
try:
print(x)
except:
print("Ceva nu a mers bine")
finally:
print("Blocul 'try except' s-a încheiat")
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:
Ieșire: program Python complet
try:
f = open("demofile.txt")
try:
f.write("Lorum Ipsum")
except:
print("Ceva nu a mers bine la scrierea în fișier")
finally:
f.close()
except:
print("Ceva nu a mers bine la deschiderea fișierului")
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:
Ieșire: program Python complet
x = -1
if x < 0:
raise Exception("Ne pare rău, nu sunt permise numere sub zero")
Exemplu
Ridică o eroare TypeError dacă x nu este un număr întreg:
Ieșire: program Python complet
x = "hello"
if not type(x) is int:
raise TypeError("Sunt permise doar numere întregi")