cum se utilizează cel mai bine încercați cu excepția Python – mai ales pentru începători
în programarea Python, manipularea excepțiilor permite unui programator să activeze controlul fluxului. Și nu are. de excepții încorporate pentru a prinde erori în cazul în care codul dvs. se rupe. Utilizarea try-exception este cel mai comun și natural mod de a gestiona Erorile neașteptate, împreună cu multe alte construcții de manipulare a excepțiilor. În acest tutorial, veți explora unele dintre cele mai bune tehnici de utilizat try-cu excepția Python.
manipularea erorilor sau manipularea excepțiilor în Python pot fi aplicate prin configurarea excepțiilor. Folosind un bloc de încercare, puteți implementa o excepție și puteți gestiona eroarea în interiorul unui bloc cu excepția. Ori de câte ori codul se rupe în interiorul unui bloc de încercare, fluxul de cod obișnuit se va opri și controlul va fi comutat la blocul cu excepția pentru gestionarea erorii.
De asemenea, citiți – aflați manipularea excepțiilor Python de la zero.
De ce să folosiți Clauza Try-Except / Try-Except-else? Cu ajutorul try-excepting și try-excepting-else, puteți evita multe probleme necunoscute care ar putea apărea din codul dvs. De exemplu, codul Python folosind stilul LBYL (Look before you leap) poate duce la condiții de cursă. Aici, clauza try-exception poate veni să vă salveze. De asemenea, există cazuri în care codul dvs. depinde în mod critic de unele informații care ar putea fi depășite până în momentul în care îl primiți. De exemplu, codul care efectuează apeluri către sistemul de operare.cale.există sau coadă.full poate eșua, deoarece aceste funcții ar putea returna date care devin învechite în momentul în care le utilizați. Alegerea mai înțeleaptă aici ar fi să urmați stilul try-exception-else din codul dvs. pentru a gestiona mai fiabil cazurile de mai sus.
creșterea excepțiilor este permisă și în Python. Aceasta înseamnă că puteți arunca sau ridica o excepție ori de câte ori este nevoie. Puteți face acest lucru pur și simplu apelând din codul dvs. Odată ridicată, excepția va opri execuția curentă ca de obicei și va merge mai departe în stiva de apeluri până la manipulare.
de ce să folosiți excepții? Ele nu numai că ajută la rezolvarea problemelor populare, cum ar fi condițiile de rasă, dar sunt, de asemenea, foarte utile în controlul erorilor în domenii precum buclele, manipularea fișierelor, comunicarea bazei de date, Accesul la rețea și așa mai departe.
prin urmare, vom acoperi probleme mai largi și vom oferi soluții în acest post. Vă rugăm să rețineți că manipularea excepțiilor este o artă care vă aduce puteri imense de a scrie un cod robust și de calitate. Așadar, pregătiți-vă să citiți câteva note cheie despre excepții, împreună cu cele mai bune modalități de a le gestiona.
trebuie să citiți – tot ce trebuie să știți despre fișierul de copiere Python .
Python: Sfaturi pentru a utiliza Try-exception, Try-exception-Else și multe altele
- cum să o excepție arbitrară
- prinde mai multe excepții într-o singură excepție bloc
- manipularea mai multor excepții cu o singură excepție bloc
- re-raising excepții în Python
- când să utilizați clauza else
- face uz de
- utilizați cuvântul cheie AS pentru a prinde anumite tipuri de excepții
- cele mai bune practici pentru excepții
- cum să treceți prin erori și să continuați execuția
- cele mai frecvente erori de excepție în Python
- Exemple de excepții cele mai frecvente în Python
1. Cum să gestionați o excepție arbitrară
uneori, este posibil să aveți nevoie de o modalitate de a permite orice excepție arbitrară și, de asemenea, doriți să puteți afișa mesajul de eroare sau excepție.
este ușor realizabil folosind excepțiile Python. Verificați codul de mai jos. În timpul testării, puteți plasa codul în interiorul blocului try în exemplul de mai jos.
try: #your codeexcept Exception as ex: print(ex)
Înapoi sus
2. Prinde mai multe excepții într-o singură excepție bloc
puteți prinde mai multe excepții într-o singură excepție bloc. A se vedea exemplul de mai jos.
except (Exception1, Exception2) as e: pass
vă rugăm să rețineți că puteți separa excepțiile de variabila cu o virgulă care se aplică în Python 2.6 / 2.7. Dar nu o poți face în Python 3. Deci, ar trebui să preferați să utilizați cuvântul cheie.
Înapoi sus
3. Manipularea mai multor excepții cu o singură excepție bloc
există mai multe moduri de a gestiona mai multe excepții. Prima dintre ele necesită plasarea tuturor excepțiilor care ar putea apărea sub forma unui tuplu. Vă rugăm să vedeți de mai jos.
try: file = open('input-file', 'open mode')except (IOError, EOFError) as e: print("Testing multiple exceptions. {}".format(e.args))
următoarea metodă este de a gestiona fiecare excepție într-un bloc dedicat cu excepția. Puteți adăuga cât mai multe, cu excepția blocurilor, după cum este necesar. A se vedea exemplul de mai jos.
try: file = open('input-file', 'open mode')except EOFError as ex: print("Caught the EOF error.") raise exexcept IOError as e: print("Caught the I/O error.") raise ex
ultimul dar nu cel din urmă este să folosești excepția fără a menționa Niciun atribut de excepție.
try: file = open('input-file', 'open mode')except: # In case of any unhandled error, throw it away raise
această metodă poate fi utilă dacă nu aveți nicio idee despre excepția posibilă aruncată de programul dvs.
Înapoi sus
4. Re-ridicarea excepțiilor în Python
excepțiile odată ridicate continuați să treceți la metodele de apelare până când sunt tratate. Deși puteți adăuga o clauză cu excepția care ar putea avea doar un apel fără nici un argument. Va avea ca rezultat reluarea excepției.
vezi exemplul de mai jos.
try: # Intentionally raise an exception. raise Exception('I learn Python!')except: print("Entered in except.") # Re-raise the exception. raise
ieșire:
Entered in except.Traceback (most recent call last): File "python", line 3, in <module>Exception: I learn Python!
Înapoi sus
5. Când să utilizați clauza else
utilizați o clauză else imediat după blocul try-excepting. Clauza else va fi lovită numai dacă nu este aruncată nicio excepție. Declarația altceva ar trebui să preceadă întotdeauna cu excepția blocurilor.
în alte blocuri, puteți adăuga codul pe care doriți să rulați atunci când nu au apărut erori.
vezi exemplul de mai jos. În acest eșantion, puteți vedea o buclă în timp ce rulează infinit. Codul solicită introducerea utilizatorului și apoi parsarea acestuia folosind funcția încorporată. Dacă utilizatorul introduce o valoare zero, atunci blocul cu excepția va fi lovit. În caz contrar, codul va curge prin blocul else.
while True: # Enter integer value from the console. x = int(input()) # Divide 1 by x to test error cases try: result = 1 / x except: print("Error case") exit(0) else: print("Pass case") exit(1)
Înapoi sus
6. Face uz de
Dacă aveți un cod pe care doriți să rulați în toate situațiile, apoi scrie-l în interiorul . Python va rula întotdeauna instrucțiunile codificate în . Acesta este cel mai comun mod de a face curat SARCINI. De asemenea, vă puteți asigura că curățarea trece.
o eroare este prinsă de clauza try. După ce codul din blocul cu excepția este executat, instrucțiunile din ar rula.
vă rugăm să rețineți că a va rula întotdeauna, chiar dacă v-ați întors înainte de ea.
vezi exemplul de mai jos.
try: # Intentionally raise an error. x = 1 / 0except: # Except clause: print("Error occurred")finally: # Finally clause: print("The is hit")
ieșire:
Error occurredThe is hit
Înapoi sus
7. Utilizați cuvântul cheie As pentru a prinde anumite tipuri de excepții
cu ajutorul as<identifier>, puteți crea un obiect nou. Și puteți, de asemenea, obiectul de excepție. Aici, exemplul de mai jos, creăm obiectul IOError și apoi îl folosim în clauză.
try: # Intentionally raise an error. f = open("no-file")except IOError as err: # Creating IOError instance for book keeping. print("Error:", err) print("Code:", err.errno)
ieșire:
('Error:', IOError(2, 'No such file or directory'))('Code:', 2)
Înapoi sus
8. Cele mai bune practici pentru ridicarea manuală a excepțiilor
evitați ridicarea excepțiilor generice, deoarece dacă faceți acest lucru, atunci trebuie luate în considerare și toate celelalte excepții mai specifice. Prin urmare, cea mai bună practică este să ridicați cea mai specifică excepție aproape de problema dvs.
exemplu rău.
def bad_exception(): try: raise ValueError('Intentional - do not want this to get caught') raise Exception('Exception to be handled') except Exception as error: print('Inside the except block: ' + repr(error)) bad_exception()
ieșire:
Inside the except block: ValueError('Intentional - do not want this to get caught',)
cele mai bune practici:
aici, ridicăm un anumit tip de excepție, nu unul generic. Și, de asemenea, folosim opțiunea args pentru a imprima argumentele incorecte dacă există. Să vedem exemplul de mai jos.
try: raise ValueError('Testing exceptions: The input is in incorrect order', 'one', 'two', 'four') except ValueError as err: print(err.args)
ieșire:
('Testing exceptions: The input is in incorrect order', 'one', 'two', 'four')
Înapoi sus
9. Cum să treceți prin erori și să continuați execuția
în mod ideal, nu ar trebui să faceți acest lucru. Dar dacă totuși doriți să faceți, urmați codul de mai jos pentru a verifica abordarea corectă.
try: assert Falseexcept AssertionError: passprint('Welcome to Prometheus!!!')
ieșire:
Welcome to Prometheus!!!
înapoi la început
acum, aruncați o privire la unele dintre cele mai frecvente excepții Python și exemplele lor.
cele mai frecvente erori de excepție
- IOError – apare pe erori ca un fișier nu se deschide.
- ImportError-dacă un modul python nu poate fi încărcat sau localizat.
- ValueError – apare dacă o funcție primește un argument de tip corect, dar o valoare inadecvată.
- KeyboardInterrupt – acesta devine lovit atunci când utilizatorul introduce tasta de întrerupere (de exemplu, Control-C sau Del cheie)
- EOFError – acesta devine ridicat în cazul în care funcțiile de intrare (input()/raw_input()) a lovit o stare end-of-file (EOF), dar fără a citi orice date.
Back to top
Exemple de cele mai frecvente excepții
except IOError:print('Error occurred while opening the file.')except ValueError:print('Non-numeric input detected.')except ImportError:print('Unable to locate the module.')except EOFError:print('Identified EOF error.')except KeyboardInterrupt:print('Wrong keyboard input.')except:print('An error occurred.')
Back to top
Summary – How To Best Use Try-exceptând Python
în timpul programării, erorile sunt obligate să se întâmple. Este un fapt pe care nimeni nu-l poate ignora. Și ar putea exista multe motive pentru erori, cum ar fi introducerea proastă a utilizatorului, permisiunea insuficientă a fișierului, indisponibilitatea unei resurse de rețea, memoria insuficientă sau cel mai probabil greșeala programatorului.
oricum, toate acestea pot fi manipulate dacă codul dvs. utilizează manipularea excepțiilor și îl implementează cu construcții precum try-exception sau tr-exception-else, try-exception-finally. Sper, v-ar fi plăcut să citiți tutorialul de mai sus.
dacă ți-a plăcut postarea, atunci nu rata să o împărtășești cu prietenii și pe rețelele de socializare (facebook / twitter).
cel mai bun,
TechBeamers.