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.

5.4. Korisni£ki denirane iznimke 495.4 Korisni£ki denirane iznimkeU <strong>Python</strong>u je mogu¢e stvarati korisni£ke iznimke tako da se deniraju nove klase iznimaka. Takveiznimke bi trebale direktno ili indirektno dolaziti iz klase ugraženih iznimaka, na primjer:>>> class MojBad(Exception):... def __init__(self, value):... self.value = value... def __str__(self):... return repr(self.value)...>>> try:... raise MojBad(2*2)... except MojBad, e:... print 'Moja se iznimka dogodila, value:', e.value...Moja se iznimka dogodila, value: 45.4.1 Tvorba iznimkiIznimke mogu biti stringovi, klase ili instance objekata. Iznimke u obliku stringova su zastarjele, iako ih<strong>Python</strong> jo² uvijek podrºava zbog kompatibilnosti. Korisni£ki denirane iznimke mogu se stvoriti koriste¢inaredbu class. Preporu£uje se kao temeljnu klasu uzeti <strong>Python</strong>ovu korijensku iznimku Exception.S korisni£ki deniranim iznimkama radi se na isti na£in kao i s ugraženim iznimkama. Uz except ielse, postoji i na£in da se denira iznimka koja ¢e se uvijek ispisati na kraju programa, bez obzira dalije ba² nju program traºio ili neku drugu. To je finally clause i denira se kao:>>> def dijeli(x, y):... try:... rez = x / y... except ZeroDivisionError:... print "Djeljenje s nulom!"... else:... print "Rezultat je", rez... finally:... print "Ispisujem zadnju iznimku"...>>> dijeli(2, 1)result is 2Ispisujem zadnju iznimku>>> dijeli(2, 0)division by zero!Ispisujem zadnju iznimku>>> dijeli("2", "1")Ispisujem zadnju iznimkuTraceback (most recent call last):File "", line 1, in ?File "", line 3, in divideTypeError: unsupported operand type(s) for /: 'str' and 'str'Kao ²to se vidi na primjeru, finally clause se ispisuje pri svakoj operaciji sa funkcijom djeli().TypeError pozvan kod dijeljenja dva stringa (dijeli("2","1")) nije pozivan od strane iznimaka,teje stoga ponovo pozvan nakon ²to se zadnja iznimka izvr²ila. Sve iznimke se mogu pozvati naredbomraise exception[,value], gdje value daje detalje o iznimci koja je pozvana.

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

Saved successfully!

Ooh no, something went wrong!