How To Break Out Of Parent Function?
If I want to break out of a function, I can call return. What if am in a child function and I want to break out of the parent function that called the child function? Is there a
Solution 1:
This is what exception handling is for:
def child():
try:
print 'The child does some work but fails.'
raise Exception
except Exception:
print 'Can I call something here so the parent ceases work?'
raise Exception # This is called 'rethrowing' the exception
print "This won't execute if there's an exception."
Then the parent function won't catch the exception and it will keep going up the stack until it finds someone who does.
If you want to rethrow the same exception you can just use raise
:
def child():
try:
print 'The child does some work but fails.'
raise Exception
except Exception:
print 'Can I call something here so the parent ceases work?'
raise # You don't have to specify the exception again
print "This won't execute if there's an exception."
Or, you can convert the Exception
to something more specific by saying something like raise ASpecificException
.
Solution 2:
you can use this (works on python 3.7):
def parent():
parent.returnflag = False
print('Parent does some work.')
print('Parent delegates to child.')
child()
if parent.returnflag == True:
return
print('This should not execute if the child fails(Exception).')
def child():
try:
print ('The child does some work but fails.')
raise Exception
except Exception:
parent.returnflag = True
print ('Can I call something here so the parent ceases work?')
return
print ("This won't execute if there's an exception.")
Post a Comment for "How To Break Out Of Parent Function?"