OSNOVE PROGRAMIRANJA U PAJTONU · OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 12: OBRADAGREŠAKA U...
Transcript of OSNOVE PROGRAMIRANJA U PAJTONU · OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 12: OBRADAGREŠAKA U...
![Page 1: OSNOVE PROGRAMIRANJA U PAJTONU · OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 12: OBRADAGREŠAKA U PROGRAMU Miloš Kovačević Đorđe Nedeljković Marija Petronijević Dušan Isailović.](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e212164c6972236530e36a2/html5/thumbnails/1.jpg)
OSNOVE PROGRAMIRANJA U PAJTONU
PREDAVANJE 12:OBRADA GREŠAKA U PROGRAMU
Miloš Kovačević
Đorđe Nedeljković
Marija Petronijević
Dušan Isailović
![Page 2: OSNOVE PROGRAMIRANJA U PAJTONU · OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 12: OBRADAGREŠAKA U PROGRAMU Miloš Kovačević Đorđe Nedeljković Marija Petronijević Dušan Isailović.](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e212164c6972236530e36a2/html5/thumbnails/2.jpg)
SADRŽAJ PREDAVANJA
- Trag greške i izuzeci
- Defanzivno programiranje
- Kritične sekcije
- Try – except struktura
![Page 3: OSNOVE PROGRAMIRANJA U PAJTONU · OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 12: OBRADAGREŠAKA U PROGRAMU Miloš Kovačević Đorđe Nedeljković Marija Petronijević Dušan Isailović.](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e212164c6972236530e36a2/html5/thumbnails/3.jpg)
GREŠKE U PROGRAMU
Greške u programu: sintaksne i semantičke.
Sintaksne greške otkriva interpreter pre pokretanja programa pa se lako otkrivaju i ispravljaju.
Semantičke greške su logički propusti koji prekidaju rad programa, ili još gore, prolaze neopažano!
U programiranju (Pajtonu), programerima stoje na raspolaganju dva mehanizma za borbu protiv grešaka:
Da se greška predupredi pre nego što nastane – defanzivno programiranje
Da se izvrši procedura oporavka, po pojavi greške – obrada izuzetaka.
![Page 4: OSNOVE PROGRAMIRANJA U PAJTONU · OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 12: OBRADAGREŠAKA U PROGRAMU Miloš Kovačević Đorđe Nedeljković Marija Petronijević Dušan Isailović.](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e212164c6972236530e36a2/html5/thumbnails/4.jpg)
MARFIJEV ZAKON
Svet računara i programiranja – svet u kome vlada Marfijev zakon.
Marfijev zakon: sve što može da se desi loše, desiće se.
Programeri treba da predvideda korisnici ne poštuju specifikaciju za učazne veličine, kao i da delovi računarskog sistema mogu otkazati u toku rada programa!
![Page 5: OSNOVE PROGRAMIRANJA U PAJTONU · OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 12: OBRADAGREŠAKA U PROGRAMU Miloš Kovačević Đorđe Nedeljković Marija Petronijević Dušan Isailović.](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e212164c6972236530e36a2/html5/thumbnails/5.jpg)
TRAG GREŠKE
Trag greške – informacija o mestu nastanka greške
![Page 6: OSNOVE PROGRAMIRANJA U PAJTONU · OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 12: OBRADAGREŠAKA U PROGRAMU Miloš Kovačević Đorđe Nedeljković Marija Petronijević Dušan Isailović.](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e212164c6972236530e36a2/html5/thumbnails/6.jpg)
OBJEKAT
GREŠKE
Objekat greške – sadrži informaciju o tipu i tragu greške
Objekti greške pripadaju različitim klasama: klasa ZeroDivisionError odnosi se na deljenje nulom.
![Page 7: OSNOVE PROGRAMIRANJA U PAJTONU · OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 12: OBRADAGREŠAKA U PROGRAMU Miloš Kovačević Đorđe Nedeljković Marija Petronijević Dušan Isailović.](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e212164c6972236530e36a2/html5/thumbnails/7.jpg)
ČESTE KLASE GREŠAKA U PAJTONU
Svi tipovi osim poslednjeg nastaju usled propusta u radu programa.
![Page 8: OSNOVE PROGRAMIRANJA U PAJTONU · OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 12: OBRADAGREŠAKA U PROGRAMU Miloš Kovačević Đorđe Nedeljković Marija Petronijević Dušan Isailović.](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e212164c6972236530e36a2/html5/thumbnails/8.jpg)
DEFANZIVNO PROGRAMIRANJE
Zasniva se na principu bolje sprečiti nego lečiti
Pre kritične obrade, proverava se da li sve potrebne veličine odgovaraju po tipu i vrednosti želejnoj specifikaciji.
Da li su brojevi celi?. Da li je delilac različit od nule?
![Page 9: OSNOVE PROGRAMIRANJA U PAJTONU · OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 12: OBRADAGREŠAKA U PROGRAMU Miloš Kovačević Đorđe Nedeljković Marija Petronijević Dušan Isailović.](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e212164c6972236530e36a2/html5/thumbnails/9.jpg)
DEFANZIVNO DELJENJE
![Page 10: OSNOVE PROGRAMIRANJA U PAJTONU · OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 12: OBRADAGREŠAKA U PROGRAMU Miloš Kovačević Đorđe Nedeljković Marija Petronijević Dušan Isailović.](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e212164c6972236530e36a2/html5/thumbnails/10.jpg)
KLIJENT-SERVER MODEL
Klijent je program ili njegov deo (npr. funkcija) koji za obavljanje svog posla potražuje uslugu od nekog drugog programa (ili dela programa).
Server je program (ili njegov deo) koji pruža uslugu klijentu.
Primeri: internet čitač i web server, program koji koristi funkciju iz nekog modula.
![Page 11: OSNOVE PROGRAMIRANJA U PAJTONU · OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 12: OBRADAGREŠAKA U PROGRAMU Miloš Kovačević Đorđe Nedeljković Marija Petronijević Dušan Isailović.](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e212164c6972236530e36a2/html5/thumbnails/11.jpg)
DEFANZIVNO PROGRAMIRANJE – SERVER ZA DELJENJE
Vraća informaciju (status) o rezultatu obrade!
![Page 12: OSNOVE PROGRAMIRANJA U PAJTONU · OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 12: OBRADAGREŠAKA U PROGRAMU Miloš Kovačević Đorđe Nedeljković Marija Petronijević Dušan Isailović.](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e212164c6972236530e36a2/html5/thumbnails/12.jpg)
DEFANZIVNO PROGRAMIRANJE – DELI KLIJENT
Primetiti da se rad može prekinutu sa ctrl-c (KeyboardInterrupt)
![Page 13: OSNOVE PROGRAMIRANJA U PAJTONU · OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 12: OBRADAGREŠAKA U PROGRAMU Miloš Kovačević Đorđe Nedeljković Marija Petronijević Dušan Isailović.](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e212164c6972236530e36a2/html5/thumbnails/13.jpg)
OBRADA IZUZETAKA
Greške pri izvršavanju nazivaju se i izuzeci(pretpostavka je da se retko dešavaju!)
Nedostaci defanzvnog pristupa:
za veliki broj ulaza teško je sprovesti sve moguće provere
program usporava sa radom zbog retkih problematičnih ulaza
često nije moguće preduprediti greške (otkaz mrežne veze ili diska)
Obrada izuzetaka zasniva se na principu hvatanja greške i pokretanja procedure oporavka.
![Page 14: OSNOVE PROGRAMIRANJA U PAJTONU · OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 12: OBRADAGREŠAKA U PROGRAMU Miloš Kovačević Đorđe Nedeljković Marija Petronijević Dušan Isailović.](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e212164c6972236530e36a2/html5/thumbnails/14.jpg)
KONTROLNA STRUKTURA try except
Kritična sekcija –deo programa u kome može doći do greške
Procedura oporavka (samo u slučaju greške)
![Page 15: OSNOVE PROGRAMIRANJA U PAJTONU · OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 12: OBRADAGREŠAKA U PROGRAMU Miloš Kovačević Đorđe Nedeljković Marija Petronijević Dušan Isailović.](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e212164c6972236530e36a2/html5/thumbnails/15.jpg)
Preporučuje se obrada svake greške ponaosob!
![Page 16: OSNOVE PROGRAMIRANJA U PAJTONU · OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 12: OBRADAGREŠAKA U PROGRAMU Miloš Kovačević Đorđe Nedeljković Marija Petronijević Dušan Isailović.](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e212164c6972236530e36a2/html5/thumbnails/16.jpg)
BEZUSLOVNO IZVRŠAVANJE PRI OBRADI IZUZETAKA
Blok finally obavezno se izvršava u svakoj varijanti izvršavanja funkcije!
![Page 17: OSNOVE PROGRAMIRANJA U PAJTONU · OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 12: OBRADAGREŠAKA U PROGRAMU Miloš Kovačević Đorđe Nedeljković Marija Petronijević Dušan Isailović.](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e212164c6972236530e36a2/html5/thumbnails/17.jpg)
EKSPLICITNO PROSLEĐIVANJE IZUZETAKA
Često server nema dovoljno informacija da obradi izuzetak.
Zato server prosleđuje izuzetak klijentu, koji bolje zna šta da radi u slučaju greške – naredba raise.
Prosleđivanje greške onome ko poziva funkcijuvidi šta ćeš sa greškom
![Page 18: OSNOVE PROGRAMIRANJA U PAJTONU · OSNOVE PROGRAMIRANJA U PAJTONU PREDAVANJE 12: OBRADAGREŠAKA U PROGRAMU Miloš Kovačević Đorđe Nedeljković Marija Petronijević Dušan Isailović.](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e212164c6972236530e36a2/html5/thumbnails/18.jpg)
EKSPLICITNO PROSLEĐIVANJE IZUZETAKA