You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
46 Iznimke... print inst.args # argumenti pohranjeni u .args... print inst # __str__ dozvoljava ispis args... x, y = inst # __getitem__ dozvoljava da se args otpakiraju... print 'x =', x... print 'y =', y('miki', 'riki')('miki', 'riki')x = mikiy = rikiAko iznimka ima argument, on se ispisuje kao zadnji dio poruke o pogre²ci('detail'). Programi zarad s iznimkama mogu raditi i s funkcijama, koje se unutar njih pozivaju.>>> def nemoguce_dijeljenje():... x = 1/0...>>> try:... nemoguce_dijeljenje()... except ZeroDivisionError, detail:... print 'Run time pogreska u dijeljenju:', detail...Ovo je Run time pogreska u dijeljenju: integer division or modulo by zero.5.3 Obradba iznimkiKada <strong>Python</strong> podigne iznimku, ona se mora dohvatiti (uhvatiti) i obraditi, ina£e ¢e <strong>Python</strong> nasilnozavr²iti izvoženje programa. Obradba iznimki prisiljava programera na razmi²ljanje o tome ²to moºepo¢i krivo unutar programa i ²to se moºe u£initi u vezi toga. Nije prakti£no (i skoro je nemogu¢e) imatina umu sve ²to moºe po¢i krivo. Umjesto toga treba traºiti stanja koja se (govore¢i op¢enito) moguponovno vratiti, koriste¢i korekcijski blok kôda, koji se zove 'obrada iznimke' (engl. exception handler).Taj kôd moºe automatski popraviti stanje bez korisni£ke interakcije, upitati korisnika za dodatne iliprihvatljive podatke za popravak problema, ili u nekim okolnostima zatvoriti program sa sys.exit().(Dakako, cijeli je smisao iznimki u tome da se takve fatalne situacije izbjegnu). <strong>Python</strong>ova naredbatry detektira i obražuje iznimke. Ona je vi²eslojna naredba kao if ili while, te slijedi pravila uvlake.Try takožer mijenja uobi£ajeno upravljanje tijeka programa. (Upravljanje tokom programa je izvr²niniz naredbi koje £ine program).try:try_blockexcept ex:except_block<strong>Python</strong> pokre¢e kôd u bloku try dok ga ne zavr²i uspje²no ili se pojavi iznimka. Ako zavr²i uspje²no,<strong>Python</strong> preska£e blok except, te se izvr²enje nastavlja na naredbi koja slijedi iza njega. Ako se pojaviiznimka, <strong>Python</strong> preska£e ostatak naredbi bloka try i ispituje vrijednost ex u odlomku except kako bise ustanovilo je li vrsta podignute iznimke odgovara vrsti koja je opisana sa ex.Ako iznimka odgovara ex, <strong>Python</strong> pokre¢e blok except, te se upravljanje tokom programa prebacujena naredbu koja slijedi blok except. Ako iznimka ne odgovara ex, iznimka se pro²iruje na bilo kojeuklju£ene try naredbe, koje bi mogle imati odlomak except u kojem bi se iznimka mogla obraditi. Akoni jedna od obliºnjih except klauzula ne obražuje podignutu iznimku, onda <strong>Python</strong> zatvara program teispisuje poruku o pogre²ci.