Middle
Da li je moguće baciti izuzetak spolja unutar generatora? Koji mehanizmi za to postoje?
sobes.tech АИ
Одговор од АИ
Da, u Pythonu je moguće baciti izuzetak unutar generatora spolja pomoću metode throw(). Ova metoda omogućava da se izuzetak prenese na mesto gde je generator trenutno zaustavljen i da se obradi unutar generatora.
Primer:
def gen():
try:
yield 1
yield 2
except ValueError:
yield 'Obrada ValueError'
g = gen()
print(next(g)) # Ispisuje 1
print(g.throw(ValueError)) # Bacamo izuzetak unutar generatora
Kao rezultat, generator će uhvatiti ValueError i moći će da ga obradi, na primer, vraćanjem posebne vrednosti.
Takođe postoji metoda close(), koja unutar generatora poziva GeneratorExit, što se može koristiti za pravilno zatvaranje generatora.