✦ Srednji nivo Pythona i OOP Srednji nivo Pythona

L2 · Koncept 04 · Napredne Python tehnike

Obradi greške.
Zaštiti porudžbinu.

Mala onlajn prodavnica može jasno da odgovori kada porudžbina ima neispravnu količinu ili nema dovoljno zaliha.

Cilj učenjaKoristite precizne blokove try, except, else, finally i raise za bezbednu proveru porudžbine.
01 Uči02 Isprobaj03 Predvidi

Učenje kao gost

Učiš kao gost — sačuvaj svoj napredak!

Napravi besplatan nalog i uči uz Sloby AI mentora, proveru razumevanja i praćenje napretka.

Cela platforma je besplatna tokom 2026. Foundations ostaje zauvek besplatan.

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 finished

Koristite 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.

Provera porudžbine
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 quantity

Prilagođeni izuzeci opisuju pravilo prodavnice koje nije ispunjeno. Više except grana zatim može prikazati odgovarajući odgovor za svaki slučaj.

Različiti izuzeci, različita pomoć
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.

Sačuvajte uzrok
try:
    quantity = int(text_quantity)
except ValueError as error:
    raise InvalidQuantityError("quantity must be a number") from error

raise ... from ... čuva vezu između prvobitne greške pri konverziji i jasnijeg izuzetka na nivou prodavnice.

Pratite proveru jedne porudžbine

  1. 1. Uđite u tryPython pokušava da izvrši kod za proveru.
  2. 2. Pokrenite raise kada pravilo nije ispunjenoKoličina koja nije pozitivna ili nedovoljno zaliha prekida normalno izvršavanje.
  3. 3. Pronađite odgovarajući exceptOdgovarajuća grana izuzetka učeniku ili kupcu daje koristan odgovor.
  4. 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.

Python radni prostor

Učitavanje Python okruženja…

Promenite količinu ili zalihe da biste isprobali uspešne porudžbine, neispravne količine i nedostupne zalihe.

order_handling.pyPython
IzlazČeka se Python
Okruženje pregledača se učitava. I dalje možeš da menjaš primer koda.

Pyodide pokreće Python u Web Worker-u pregledača. Zaustavlja se i ponovo pokreće ako se kod predugo izvršava. Izvršavanje u pregledaču nije potpuna bezbednosna granica; ne unosi tajne i ne oslanjaj se na njega za izolaciju nepouzdanog koda.

Koje će redove ovaj program ispisati?

Pratite pokrenuti izuzetak. Primetite da se else ne izvršava nakon izuzetka, ali finally se izvršava.

def validate_quantity(quantity, stock):
    if quantity <= 0:
        raise ValueError("quantity must be positive")
    if quantity > stock:
        raise RuntimeError("not enough stock")
    return quantity

try:
    validate_quantity(5, 3)
except RuntimeError:
    print("Out of stock")
else:
    print("Order accepted")
finally:
    print("Order check finished")
Izaberi izlaz

Vežbajte samostalno

Mini izazov — Obradite porudžbinu

Dovršite mali proveravač porudžbina bez skrivanja razloga zbog kog porudžbina ne može biti prihvaćena.

Vaš ciljPokrenite jedan izuzetak za količinu koja nije pozitivna, a drugi za nedovoljno zaliha. Obradite oba zasebnim except granama.

order_challenge.py

Opcioni nagoveštaji
  • Proverite količinu pre zaliha, jer količina koja nije pozitivna nije ispravna bez obzira na dostupnost.
  • Unutar svake if grane koja nije ispunjena koristite raise, zatim odgovarajuću klasu izuzetka i kratku poruku.
Pitajte Slobyja za nagoveštaj
Sloby, maskota Python AI Tutora

Tvoj mentor za učenje

Prijavite se da pitate Slobyja

Napravite besplatan nalog ili se prijavite za AI smernice tokom učenja.

Prijavite se da proverite svoje razumevanje

Napravite besplatan nalog ili se prijavite da biste dobili AI povratnu informaciju i sačuvali napredak u učenju.

Python AI Tutor · Uči razumevanjem, a ne samo pokretanjem koda.