12.07.2015 Views

Python

Python

Python

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!