Conținut curs
Gestionarea erorilor și excepțiilor
0/1
Python Intermediar
Despre lecție

Gestionarea excepțiilor avansată în Python

Introducere

În această lecție, vom explora gestionarea excepțiilor avansată în Python. Vom învăța despre diferitele tipuri de excepții, cum să le gestionați în mod eficient și cum să creați excepții personalizate. De asemenea, vom discuta despre diversele tehnici și metode care pot fi folosite pentru a îmbunătăți gestionarea erorilor în aplicațiile dvs. Python.

Cuprins

  1. Recapitulare: Gestionarea excepțiilor în Python
  2. Excepții încorporate și ierarhia excepțiilor
  3. Blocuri try, except, else și finally
  4. Crearea și ridicarea excepțiilor personalizate
  5. Gestionarea mai multor excepții
  6. Folosirea assert pentru verificarea condițiilor
  7. Încheiere și concluzii

1. Recapitulare: Gestionarea excepțiilor în Python

Gestionarea excepțiilor în Python presupune utilizarea unor structuri de control speciale pentru a trata erorile și excepțiile care pot apărea în timpul execuției programului. Aceasta permite programelor să continue să ruleze în cazul unor erori neașteptate sau să ofere feedback detaliat despre problemele întâmpinate.

Structura de bază pentru gestionarea excepțiilor în Python este blocul tryexcept:

python
try:
    # Cod care poate arunca o excepție
except TipExcepție1:
    # Acțiuni pentru a trata TipExcepție1
except TipExcepție2:
    # Acțiuni pentru a trata TipExcepție2

2. Excepții încorporate și ierarhia excepțiilor

Python are numeroase excepții încorporate care pot fi utilizate pentru a trata diverse tipuri de erori. Aceste excepții sunt organizate într-o ierarhie cu o clasă de bază numită BaseException. Toate excepțiile derivate din BaseException pot fi tratate în blocurile except.

Cele mai comune excepții încorporate sunt:

  • Exception: Clasa de bază pentru toate excepțiile non-sistem
  • ArithmeticError: Clasa de bază pentru erorile aritmetice
  • FloatingPointError: Eroare specifică pentru calculele în virgulă mobilă
  • OverflowError: Eroare pentru valori numerice care depășesc limita maximă
  • ZeroDivisionError: Eroare pentru împărțirea la zero
  • LookupError: Clasa de bază pentru erorile de căutare în colecții
  • IndexError: Eroare pentru indexarea în afara limitelor unei secvențe
  • KeyError: Eroare pentru căutarea unei chei care nu există într-un dicționar
  • FileNotFoundError: Eroare pentru încercarea de a accesa un fișier inexistent
  • PermissionError: Eroare pentru încercarea de a accesa o resursă fără permisiuni adecvate

3. Blocuri try, except, else și finally

În gestionarea excepțiilor, putem folosi blocurile try, except, else și finally pentru a controla fluxul programului în funcție de excepțiile întâlnite și de execuția cu succes a codului.

Exemplu:

python
try:
    # Cod care poate arunca o excepție
except TipExcepție:
    # Acțiuni pentru a trata excepția
else:
    # Cod care se execută dacă nu s-au întâlnit excepții în blocul try
finally:
    # Cod care se execută întotdeauna, indiferent de excepțiile întâlnite

4. Crearea și ridicarea excepțiilor personalizate

Putem crea excepții personalizate prin definirea unei noi clase care moștenește de la clasa Exception sau una dintre subclasele sale. Ridicăm excepțiile personalizate folosind cuvântul cheie raise.

Exemplu:

python
class ExcepțiePersonalizată(Exception):
    def __init__(self, mesaj):
        super().__init__(mesaj)

try:
    # Cod care poate arunca o excepție personalizată
    raise ExcepțiePersonalizată("Aceasta este o excepție personalizată!")
except ExcepțiePersonalizată as e:
    print(f"A apărut o excepție: {e}")

5. Gestionarea mai multor excepții

Putem gestiona mai multe excepții în același bloc tryexcept, fie prin enumerarea tipurilor de excepții într-un tuple, fie prin folosirea mai multor blocuri except.

Exemplu:

python
try:
    # Cod care poate arunca mai multe excepții
except (TipExcepție1, TipExcepție2):
    # Acțiuni pentru a trata ambele tipuri de excepții

sau:

python
try:
    # Cod care poate arunca mai multe excepții
except TipExcepție1:
    # Acțiuni pentru a trata TipExcepție1
except TipExcepție2:
    # Acțiuni pentru a trata TipExcepție2

6. Folosirea assert pentru verificarea condițiilor

În Python, putem folosi cuvântul cheie assert pentru a testa condiții și a arunca excepții automat dacă condițiile nu sunt îndeplinite. Acest lucru este util pentru a verifica invariantele programului și a detecta erorile devreme.

Exemplu:

python
def împarte(a, b):
    assert b != 0, "Împărțirea la zero nu este permisă"
    return a / b

try:
    rezultat = împarte(10, 0)
except AssertionError as e:
    print(f"A apărut o eroare: {e}")

7. Încheiere și concluzii

În această lecție, am explorat gestionarea avansată a excepțiilor în Python. Am învățat despre diferitele tipuri de excepții, cum să le gestionați în mod eficient și cum să creați excepții personalizate. Am discutat, de asemenea, despre diversele tehnici și metode care pot fi folosite pentru a îmbunătăți gestionarea erorilor în aplicațiile noastre Python.

Gestionarea corectă a excepțiilor este esențială pentru dezvoltarea de software robust și sigur. Asigurați-vă că folosiți aceste tehnici și metode pentru a vă îmbunătăți abilitățile de programare și pentru a crea aplicații mai rezistente la erori.