如果我想打破一个函数,我可以调用return
.
如果我在子函数中并且想跳出调用子函数的父函数怎么办?有没有办法做到这一点?
一个最小的例子:
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."
这就是异常处理的目的:
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."
那么父函数将不会捕获异常,并且它将继续在堆栈中向上查找,直到找到捕获异常的人。
如果你想重新抛出相同的异常,你可以使用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."
或者,您可以将Exception
通过说类似的话来表达更具体的内容raise ASpecificException
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)