Izuzeci očekivanim neuspesima daju jasan tok.
Greška u programu je greška u njegovoj logici. Izuzetak je događaj tokom izvršavanja koji Python može prijaviti, a program obraditi. Za porudžbinu su neispravan unos i nedostatak zaliha očekivane situacije koje vredi precizno obraditi.
stock = 3
quantity = 5
try:
if quantity > stock:
raise ValueError("not enough stock")
except ValueError as error:
print(error)
else:
print("Order accepted")
finally:
print("Order check finished")try sadrži kod koji može da ne uspe. except obrađuje odgovarajući izuzetak, else se izvršava samo kada nema izuzetka, a finally se izvršava uvek. Hvatajte određene tipove umesto praznog except-a ili opšteg except Exception.
not enough stock
Order check finishedKoristite raise kada kod otkrije neispravne poslovne podatke. Prilagođeni izuzetak, kao što je InvalidQuantityError, jasno opisuje razlog. Koristite raise NewError(...) from error kada je uzrok greška nižeg nivoa.
Neka poruke o greškama budu korisne: Ne skrivajte neočekivane neuspehe. Obradite samo izuzetke koje razumete, prikažite korisnu poruku i tokom razvoja ostavite nepovezane probleme vidljivim.
class InvalidQuantityError(ValueError):
pass
class OutOfStockError(Exception):
pass
def validate_order(quantity, stock):
if quantity <= 0:
raise InvalidQuantityError("quantity must be positive")
if quantity > stock:
raise OutOfStockError("not enough stock")
return quantityPrilagođeni izuzeci opisuju pravilo prodavnice koje nije ispunjeno. Više except grana zatim može prikazati odgovarajući odgovor za svaki slučaj.
try:
validate_order(quantity, stock)
except InvalidQuantityError:
print("Choose a positive quantity")
except OutOfStockError:
print("Choose fewer items")Izvršava se prva odgovarajuća except grana. Određene izuzetke navedite pre opštijih roditeljskih tipova.
try:
quantity = int(text_quantity)
except ValueError as error:
raise InvalidQuantityError("quantity must be a number") from errorraise ... from ... čuva vezu između prvobitne greške pri konverziji i jasnijeg izuzetka na nivou prodavnice.
Pratite proveru jedne porudžbine
- 1. Uđite u tryPython pokušava da izvrši kod za proveru.
- 2. Pokrenite raise kada pravilo nije ispunjenoKoličina koja nije pozitivna ili nedovoljno zaliha prekida normalno izvršavanje.
- 3. Pronađite odgovarajući exceptOdgovarajuća grana izuzetka učeniku ili kupcu daje koristan odgovor.
- 4. Jasno završiteelse se izvršava nakon uspeha; finally se izvršava bez obzira na to da li je porudžbina uspela ili nije.
Česte greške
- Hvatanje svegaIzbegavajte prazan except i opšti except Exception kada određeni tip objašnjava problem.
- Korišćenje else nakon neuspehaelse pripada try bloku i izvršava se samo kada nijedan izuzetak nije pokrenut.
- Zaboravljanje finally blokaKoristite finally za radnje koje se moraju završiti, kao što su beleženje u dnevnik ili zatvaranje resursa.
- Pokretanje izuzetka bez jasnog pravilaPokrenite smislen izuzetak kada provera otkrije neispravnu količinu ili stanje zaliha.
