Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
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