How to break out of parent function?

Viewed 3501

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 way to do this?

A minimal example:

def parent():
    print 'Parent does some work.'
    print 'Parent delegates to child.'
    child()
    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:
        print 'Can I call something here so the parent ceases work?'
        return
    print "This won't execute if there's an exception."
2 Answers

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.")
Related