[python] Jak ukoncit podprogram po fatalnej chybe bez toho aby sa ukoncil aj hlavny program

Petr Prikryl PrikrylP na skil.cz
Středa Leden 31 11:56:34 CET 2007


> V pripade takto jednoducheho programu ktory ma len jednu 
> funkciu by return pomohol, pretoze return ukoncuje funkciu. 
> Ale co v pripade realneho programu, ktory ma viac funkcii?
> fkt1()
> fkt2()
> ....
> Ak v niektorej funkcii nastane fatalna chyba chcem aby sa 
> ukoncil cely program a nepokracoval dalej. Nechcem, aby sa 
> ukoncila len funkcia a pokracovalo sa v dalsej funkcii. 

V takovém případě to vypadá na klasický příklad
použití výjimky. Můžu ji vyvolat odkudkoliv a můžu
ji odchytit na vhodném místě.

class KritickaChyba(Exception):
    pass

...

def run(self):
    for j in range(9): 
      if j!=7:
        print "running..."
      else:
        print "j = %d" %j
        print "Stop"
        raise KritickaChyba()

...

from consolepgm import pgm
#
print "spustam program..."
try:
    mypgm=pgm()
    mypgm.run()
except KritickaChyba:
    pass
print "koniec programu"


(Nezkoušel jsem si vytvořit testovací příklad.
Píšu to z hlavy. Ověř si to.)


pepr


Další informace o konferenci Python