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.2. Rad s iznimkama 45ugražena iznimka podiºu true pri pojavi pogre²ke njenog tipa. Ostatak ispisane linije poruke pruºadetaljniji opis pogre²ke (TypeError), a dio prije imena iznimke govori o kontekstu u kojem se pogre²kadogodila. Taj kontekst je u obliku slijeda (Traceback) obavijesti, od posljednjeg mjesta, rekurzivnoprema po£etku mogu¢e pogre²ke.5.2 Rad s iznimkamaU <strong>Python</strong>u je mogu¢e pisati programe koji ¢e raditi (dohva¢ati i obraživati) promatrane iznimke, ²tose vidi na sljede¢em primjeru:>>> while True:... try:... x = int(raw_input("Unesite broj: "))... break... except ValueError:... print "Oops! To nije dobar broj. Probajte ponovo..."Pri tome Try radi po sljede¢em na£elu:• ako se tokom izvr²avanja ne pojavi iznimka, except linija se preska£e i try zavr²ava• ako se iznimka pojavi tijekom izvr²avanja try-a, i ako odgovara iznimci navedenoj u except liniji,onda se ona izvr²ava• ako se iznimka pojavi, a ne odgovara except liniji, provjeravaju se druge iznimke u try izrazu.Ako njih nema, program zavr²ava i pokazuje poruku koja je gore navedena.Pri tomu try moºe imati vi²e od jedne except linije (uvjeta), koji dohva¢aju neke druge iznimke.Pri tome se najvi²e izvr²ava jedna od njih, i to samo za iznimke navedene u tom djelu except linije, aline za druge. Except linija moºe imati vi²e iznimki, deniranih unutar n-terca, npr:... except (RuntimeError, TypeError, NameError):... passTry...except izraz moºe sadrºavati naredbu else koja se izvr²ava ako u try bloku nije dohva¢enaniti jedna iznimka.for arg in sys.argv[1:]:try:f = open(arg, 'r')except IOError:print 'cannot open', argelse:print arg, 'has', len(f.readlines()), 'lines'f.close()Taj se na£in koristi umjesto pisanja dodatnih linija u try-u, jer se tako izbjegava mogu¢nost uporabeiznimke koja nije navedena u try bloku. Iznimke mogu imati pridruºene vrijednosti, argumente,koji ovise o tipu iznimke. Except izraz moºe denirati varijablu nakon imena iznimke, koja je s instancomiznimke vezana s argumentima u instance.args. Umjesto kori²tenja instance.args dobro jeproslijediti jedinstveni argument iznimke i vezati ga s atributom poruke.>>> try:... raise Exception('miki', 'riki')... except Exception, inst:... print type(inst) # instance iznimke

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

Saved successfully!

Ooh no, something went wrong!