12.07.2015 Views

Python

Python

Python

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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!