Conținut curs
Python Avansat
Despre lecție
  1. Recapitulare a gestionării excepțiilor

    • Introducere în excepții și erori în Python
    • blocurile try, except, else și finally
  2. Excepții multiple

    • Gestionarea mai multor tipuri de excepții
    • Exemple și exerciții practice
  3. Crearea excepțiilor personalizate

    • Cum se creează o excepție personalizată
    • Utilizarea excepțiilor personalizate în programe
    • Exemple și exerciții practice
  4. Lanțul de gestiune a excepțiilor

    • Cum funcționează lanțul de gestiune a excepțiilor
    • Propagarea excepțiilor în funcții și metode
    • Exemple și exerciții practice
  5. Folosirea raise pentru a relansa o excepție

    • Utilizarea raise pentru a relansa o excepție prinsă
    • Exemple și exerciții practice
  6. Utilizarea assert pentru a verifica condițiile

    • Cum se folosește assert în Python
    • Exemple și exerciții practice

Exemple și exerciții pentru fiecare subpunct:

Exemplu: Excepții multiple

python
try:
    numar = int(input("Introduceți un număr: "))
    rezultat = 10 / numar
except ZeroDivisionError:
    print("Nu se poate împărți la zero.")
except ValueError:
    print("Ați introdus un caracter care nu este un număr.")

Exercițiu:

Gestionați excepțiile care pot apărea atunci când deschideți un fișier și încercați să scrieți în el.

Exemplu: Crearea excepțiilor personalizate

python
class EroareDivizareImpare(Exception):
    pass

def divide_pare(numar1, numar2):
    if numar1 % 2 != 0 or numar2 % 2 != 0:
        raise EroareDivizareImpare("Unul sau ambele numere sunt impare.")
    return numar1 / numar2

try:
    rezultat = divide_pare(10, 3)
except EroareDivizareImpare as e:
    print(e)

Exercițiu:

Creați o excepție personalizată pentru a gestiona cazul în care un utilizator încearcă să acceseze o resursă pentru care nu are permisiuni.

Exemplu: Lanțul de gestiune a excepțiilor

python
def functie1():
    functie2()

def functie2():
    try:
        x = 1 / 0
    except ZeroDivisionError as e:
        print("Eroare în funcția 2:", e)
        raise

try:
    functie1()
except ZeroDivisionError as e:
    print("Eroare în funcția 1:", e)

Exercițiu:

Gestionați o excepție care este propagată de-a lungul a trei funcții.

Exemplu: Folosirea raise pentru a relansa o excepție

python
try:
    numar = int(input("Introduceți un număr: "))
    if numar < 0:
        raise ValueError("Nu se acceptă numere negative.")
except ValueError as e:
    print(e)
    raise

Exercițiu:

Relansați o excepție prinsă într-un alt bloc de try și except.

Exemplu: Utilizarea assert pentru a verifica condițiile

python
def calculeaza_rata_dobânzii(principal, rate, perioada):
    assert principal > 0, "Principalul trebuie să fie mai mare decât zero."
    assert rate > 0, "Rata trebuie să fie mai mare decât zero."
    assert perioada > 0, "Perioada trebuie să fie mai mare decât zero."
    return principal * rate * perioada

try:
    rezultat = calculeaza_rata_dobânzii(-10000, 0.05, 5)
except AssertionError as e:
    print(e)

Exercițiu:

Utilizați assert pentru a verifica dacă un șir de caractere introdus de utilizator conține cel puțin 8 caractere și cel puțin o cifră.

Rezumat:

În această lecție, am aprofundat gestionarea excepțiilor în Python, abordând subiecte precum gestionarea mai multor tipuri de excepții, crearea excepțiilor personalizate, lanțul de gestiune a excepțiilor, relansarea excepțiilor cu raise și utilizarea assert pentru a verifica condițiile.

Am realizat exemple și exerciții practice pentru a ne familiariza cu aceste concepte și pentru a înțelege cum să le aplicăm în diferite situații în dezvoltarea de programe. Acest set de cunoștințe ne va ajuta să gestionăm erorile și excepțiile într-un mod mai eficient și să scriem cod mai robust și mai ușor de întreținut.