✦ Osnove Pythona Modul rada sa podacima

Koncept 22 · Obrada grešaka

Obradite očekivane greške.
Neka program ostane koristan.

Programi često dobijaju vrednosti koje ne mogu potpuno da kontrolišu. Obrada grešaka omogućava programu da odgovori na očekivani problem tokom izvršavanja umesto da se odmah prekine.

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.

Obradi očekivani problem tokom izvršavanja, a zatim nastavi program.

Već poznaješ operacije koje mogu uspeti ili ne uspeti. int("42") radi, dok int("abc") ne može taj tekst da pretvori u ceo broj. Slično tome, 10 / 2 radi, ali 10 / 0 izaziva problem dok se program izvršava. Koristi try i except kada program očekuje određeni problem tokom izvršavanja i zna kako da ga obradi.

value = "abc"

try:
    number = int(value)
    print(number)
except ValueError:
    print("Please enter a valid number.")

Python ulazi u try i pokušava int(value). Ovde int("abc") izaziva ValueError, pa Python preskače preostale linije u tom try bloku, pronalazi odgovarajući except ValueError i izvršava njegovu poruku. Kod posle cele try/except strukture zatim može da nastavi izvršavanje.

Please enter a valid number.

Razdvoji sintaksne greške od izuzetaka tokom izvršavanja. Sintaksna greška znači da Python ne može pravilno da pročita napisani kod, kao print("Hello" sa nedostajućom zagradom. Izuzetak nastaje dok se sintaksno ispravan kod izvršava, kao int("abc"). try/except obrađuje očekivane izuzetke tokom izvršavanja; ne popravlja neispravnu Python sintaksu.

↳

Koristi ovaj mentalni model za obradu grešaka: rizična operacija → nastaje izuzetak → odgovarajući except ga obrađuje → program nastavlja dalje

Kada izuzetak ne nastane, except se preskače
value = "12"

try:
    number = int(value)
    print(number)
except ValueError:
    print("Please enter a valid number.")

print("Program continues.")

int("12") uspeva, pa se ostatak try bloka izvršava i ispisuje 12. Ne nastaje ValueError, zato se taj except blok preskače. Python zatim stiže do print("Program continues."). except blok se ne izvršava svaki put; izvršava se samo kada nastane njegov odgovarajući izuzetak.

ValueError: vrednost se ne može koristiti na taj način
int("42")
int("abc")

Oba ulaza su stringovi, ali "42" može postati ceo broj, a "abc" ne može. U ovoj lekciji čitaj ValueError kao koristan signal da se vrednost ne može obraditi na traženi način.

ZeroDivisionError: drugačiji problem zahteva drugačiju obradu
number = 10

try:
    print(number / 0)
except ZeroDivisionError:
    print("Cannot divide by zero.")

Deljenje nulom izaziva ZeroDivisionError, a ne ValueError. Različiti očekivani problemi imaju različite tipove izuzetaka, zato izaberi obradu koja odgovara operaciji koju štitiš.

Dve except grane opisuju dva očekivana toka
value = "5"

try:
    number = int(value)
    print(10 / number)
except ValueError:
    print("Please enter a number.")
except ZeroDivisionError:
    print("Cannot divide by zero.")

Sa "5" pretvaranje i deljenje uspevaju, pa se nijedna grana za obradu ne izvršava. Sa "abc" pretvaranje izaziva ValueError. Sa "0" pretvaranje uspeva, ali deljenje izaziva ZeroDivisionError. Python bira odgovarajuću except granu za problem koji je nastao.

Ostatak try bloka se preskače nakon izuzetka
value = "0"

try:
    number = int(value)
    result = 10 / number
    print(result)
except ValueError:
    print("Invalid number.")
except ZeroDivisionError:
    print("Cannot divide by zero.")

print("Done.")

Prati tok: int("0") vraća 0, zatim 10 / 0 izaziva ZeroDivisionError. Python preskače print(result), izvršava odgovarajuću obradu, ispisuje "Cannot divide by zero.", a zatim nastavlja posle strukture i ispisuje "Done.".

Obradi greške koje očekuješ i znaš kako da rešavaš
except ValueError:
    print("Please enter a valid number.")

Konkretna obrada pokazuje šta program očekuje i kako će odgovoriti. Hvatanje svega bez jasnog razloga može sakriti drugi, neočekivani problem, zato počni od konkretnih grešaka koje tvoj kod može smisleno da obradi.

Praktičan kontrolni spisak za čitanje obrade grešaka

  1. Pronađi rizičnu operacijuKoja operacija u try bloku može da ne uspe dok se izvršava?
  2. Prepoznaj očekivani izuzetakDa li ova operacija može izazvati ValueError, ZeroDivisionError ili nijedan od njih?
  3. Prati try blokKoje se linije uspešno izvršavaju pre nego što nastane izuzetak, ako nastane?
  4. Pronađi odgovarajući exceptKoja except grana odgovara izuzetku koji je nastao?
  5. Preskoči ostatak try bloka nakon izuzetkaNakon izuzetka Python napušta preostale naredbe u tom try bloku.
  6. Nastavi posle try/exceptKoji se kod izvršava sledeći nakon završetka odgovarajuće grane ili nakon što nijedan izuzetak nije nastao?

Česte početničke greške

  • Pretpostavljanje da se except uvek izvršavaBlok except izvršava se samo kada nastane njegov odgovarajući izuzetak.
  • Očekivanje da try/except popravlja sintaksne greškePython sintaksa mora biti ispravna pre nego što obrada grešaka tokom izvršavanja može da se pokrene.
  • Hvatanje pogrešnog tipa izuzetkaValueError ne obrađuje ZeroDivisionError; uskladi obradu sa očekivanim problemom.
  • Očekivanje da se sledeća linija unutar try izvrši nakon izuzetkaKada nastane izuzetak, Python preskače preostale naredbe u tom try bloku.
  • Hvatanje svega bez jasnog razlogaDaj prednost konkretnim očekivanim greškama koje program može jasno da obradi.
  • Zaboravljanje da izvršavanje može da se nastavi nakon togaNakon završetka odgovarajuće obrade, kod posle try/except strukture i dalje može da se izvršava.

Python radni prostor

Učitavanje Python okruženja…

Promeni value u "12", "abc" ili neki drugi string i prati da li telo try bloka uspeva ili se izvršava ValueError grana.

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

Šta će ovaj program ispisati?

Pročitaj svaku operaciju nad podacima pre nego što izabereš odgovor.

number = 10

try:
    print(number / 0)
except ZeroDivisionError:
    print("Cannot divide by zero")
Izaberi izlaz
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.