Gestionarea excepțiilor este capacitatea dvs. de a personaliza și afișa mesaje de eroare pentru părțile programului dvs. care nu funcționează.
Indiferent dacă creați un site web, creați un API, un modul sau orice alt produs care utilizează Python, capacitatea dvs. de a gestiona în mod eficient excepțiile vă permite să precizați în mod explicit cauza unei erori.
Aici, vom arunca o privire la modul în care puteți gestiona excepțiile din Python.
Cum funcționează gestionarea excepțiilor în Python
Când ridicați excepții, îi spuneți Python să afișeze un mesaj ori de câte ori un bloc de cod eșuează. Manipularea excepțiilor este ca și cum ai spune cuiva să încerce să ridice o greutate. Și dacă nu pot, ar trebui să vă anunțe.
Cu toate acestea, pentru a ridica o excepție în Python, îi veți spune Python să încerce să ruleze un anumit bloc de cod. Dacă blocul respectiv eșuează, puteți cere lui Python să creeze o excepție definită la codul eșuat.
Când ar trebui să utilizați excepții în programarea Python?
De cele mai multe ori, puteți masca erorile standard Python folosind excepții. Dar trebuie să rămâneți vigilenți, deoarece acest lucru poate cauza probleme de depanare. În consecință, s-ar putea să vă fie greu să aflați cauza principală a unei eventuale erori.
Prin urmare, ar trebui să utilizați excepții atunci când ați testat suficient codul și sunteți sigur că funcționează. În cele din urmă, este cea mai bună practică să le utilizați pentru a gestiona potențialele defecte care pot apărea din finalul utilizatorului, mai degrabă decât din codul în sine.
Cu alte cuvinte, puteți utiliza excepțiile ca instrument de avertizare pentru a ghida utilizatorii cu privire la modul de utilizare a programului dvs.
Gestionarea excepțiilor Python
Pentru a gestiona excepțiile din Python, mai întâi trebuie să vă înfășurați codul într-un fișier încearcă... cu excepția bloc. Ocazional, poate fi necesar să includeți un in cele din urma declarație pentru a gestiona acțiuni ulterioare, în funcție de nevoile dvs.
Conceptul de codificare a excepțiilor Python arată în general astfel:
încerca:
"cod de executat"
cu exceptia:
„mesaj de eroare”
După cum sa menționat mai devreme, puteți utiliza și in cele din urma într-un bloc de excepție. Dar codul pe care îl scrieți într-un in cele din urma clauza este independentă și rulează indiferent dacă există sau nu o excepție.
În esență, este util dacă aveți un alt bloc de cod pe care doriți să îl rulați continuu, indiferent de ceea ce se întâmplă în încearcă... cu excepția bloc.
Iată un exemplu:
încerca:
print (9 + 6)
cu exceptia:
print („mesaj de eroare”)
in cele din urma:
tipăriți („vă rugăm să reporniți”)
Ieșire:
15
te rog reporni
În codul de mai sus, te rog reporni rulează continuu, indiferent dacă există sau nu o excepție.
Un altceva condiția poate urma și o cu exceptia afirmație:
încerca:
C = 2 + B
cu exceptia:
print ("B trebuie definit")
altceva:
print (u "Adăugat cu succes! Rezultatul este% s "% (C))
Ieșire: B trebuie definit
Acum încercați din nou cu „B” definit:
încerca:
B = 5
C = 2 + B
cu exceptia:
print ("B trebuie definit")
altceva:
print (u "Adăugat cu succes! Rezultatul este% s "% (C))
Ieșire: Adăugat cu succes! Rezultatul este 7
Exemplele de mai sus sunt excepții ne standardizate. Dar puteți avea o excepție mai explicită atunci când combinați excepții încorporate (definite) cu excepții nestandardizate:
încerca:
C = 2 + B
cu excepția NameError ca eroare:
print (eroare, ":", "B trebuie definit, vă rog")
altceva:
print (u "Adăugat cu succes! Rezultatul este% s "% (C))
Ieșire: numele „B” nu este definit: B trebuie definit, vă rog
Excepția de mai sus verifică mai întâi dacă există un NameError în încerca bloc. Apoi imprimă standardul NameError excepție mai întâi („numele„ B ”nu este definit”). Și îl acceptă cu excepția dvs. scrisă („B trebuie definit, vă rog”).
Legate de: Principii de bază de programare pe care fiecare programator trebuie să le cunoască
Și dacă doriți să gestionați un lanț de excepții, puteți însoți și un încerca bloc cu mulți cu exceptia declarații. Acest lucru este destul de la îndemână dacă încerca blocul are potențialul de a avea multe excepții:
încerca:
B = 5
C = 2 + B
D = plutitor (6)
F = 7/0
cu excepția NameError ca eroare:
print (eroare, ":", "B trebuie definit, vă rog")
cu excepția ValueError ca val:
print (val, ":", "Nu puteți converti aceste date")
cu excepția ZeroDivisionError ca zeroerr:
print (zeroerr, ":", "Nu puteți împărți un număr la zero")
altceva:
print (u "Operațiune reușită! Rezultatele sunt:% s,% s și% s "% (C, D, F))
Ieșire: împărțirea la zero: nu puteți împărți un număr la zero
Ce se întâmplă dacă diviziunea este validă? De exemplu, înlocuirea F = 7/0 în codul de mai sus cu F = 7/5 dă:
Ieșire: Operațiune reușită! Rezultatele sunt: 7, 6.0 și 1.4
Excepții definite de utilizator în Python
Puteți veni și cu excepția dvs. și le puteți apela mai târziu în program. Acest lucru vă permite să dați o descriere specifică a excepției dvs. și să o denumiți după cum doriți.
Cu toate acestea, fiecare excepție definită de utilizator (direct sau indirect) provine încă de la încorporat Excepție clasa Python.
Exemplul de cod de mai jos face trimitere la bază Excepție direct apelând Eroare de rulare din aceasta:
class connectionError (RuntimeError):
def __init __ (sine, valoare):
self.value = valoare
încerca:
raise connectionError („Nume gazdă greșit”)
cu excepția connectionError ca eroare:
print (err.value)
Ieșire: Nume rău de gazdă
Rețineți că eroare de conexiune, în acest caz, este o clasă definită de utilizator, pe care o poți ridica oricând ai nevoie de ea în programul tău.
Legate de: Ghidul pentru începători pentru expresii regulate cu Python
Puteți face o excepție definită de utilizator derivând-o direct din Excepție clasa de bază. Cu toate acestea, excepția de mai jos împiedică scăderea lui 5 din 6 și apelează direct excepția din clasa de bază:
erori de clasă (excepție):
trece
clasa șase FiveError (erori):
def __init __ (sine, valoare, mesaj):
self.value = valoare
self.message = mesaj
încerca:
raise sixFiveError (6-5, „Această substracție nu este permisă”)
cu excepția sixFiveError ca e:
print („A apărut o eroare:”, e.message)
Ieșire: A apărut o eroare: această substracție nu este permisă
În practică, puteți utiliza o excepție definită anterior apelând-o într-o altă funcție. De exemplu, puteți crea un fișier floatError care permite doar adăugarea a două flotante:
# Apelați întâi clasele de excepție de bază:
erori de clasă (excepție):
trece
# Apoi, derivă propria excepție din clasa de bază:
clasa FloatError (erori):
def __init __ (sine, valoare, mesaj):
self.value = valoare
self.message = mesaj
# Creați o funcție pentru a adăuga două flotante:
def addTwoFloat (a, b):
if (tip (a) și tip (b))! = float:
ridicați FloatError (a + b, „Numerele trebuie să fie float pentru a adăuga”)
altceva:
print (a + b)
addTwoFloat (4, 7)
Ieșire: __main __. FloatError: (11, „Numerele trebuie să fie float pentru a adăuga”)
Pentru că acum ați definit un FloatError class, Python îl ridică dacă încercați să adăugați doi literali non-float folosind addtwoFloat funcţie.
Puteți imprima fișierul FloatError clasă în același fișier Python în care l-ați creat pentru a vedea ce se întâmplă:
print (FloatError)
Ieșire:
FloatErrortotuși, nu este o excepție Python încorporată. Puteți verifica acest lucru apelând FloatError într-un alt fișier Python proaspăt în care nu ați creat această clasă:
print (FloatError)
Ieșire: NameError: numele „FloatError” nu este definit
Ai un NameError deoarece Python nu o recunoaște ca o excepție standard.
Puteți încerca să definiți și alte clase de erori pentru a vedea cum se joacă.
Faceți programele Python mai ușor de utilizat cu excepții
Există multe excepții standard în Python. Dar o poți defini și pe a ta. Cu toate acestea, ușurința utilizării programului dvs. depinde într-o oarecare măsură de modul în care gestionează diferite excepții (indiferent dacă sunt definite de utilizator, nespecifice sau standard).
Cu toate acestea, excepțiile vă permit să dictați cum ar trebui să funcționeze programul dvs. atunci când utilizatorii interacționează cu aceștia. Afirmarea clară și concisă a cauzei unei erori oferă utilizatorilor o atenție la ceea ce fac greșit și, uneori, îi îndreaptă în direcția corectă.
Echipați-vă cu cunoștințele necesare pentru a distruge fiecare bug Python din calea dvs.
Citiți în continuare
- Programare
- Piton
- Tutoriale de codare
Idowu este pasionat de orice tehnologie inteligentă și productivitate. În timpul liber, se joacă cu codificarea și trece la tabla de șah când se plictisește, dar îi place, de asemenea, să se rupă de rutină din când în când. Pasiunea sa pentru a arăta oamenilor calea în jurul tehnologiei moderne îl motivează să scrie mai multe.
Aboneaza-te la newsletter-ul nostru
Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!
Încă un pas…!
Vă rugăm să confirmați adresa de e-mail în e-mailul pe care tocmai vi l-am trimis.