如果我想打破一个函数,我可以调用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."
Run Code Online (Sandbox Code Playgroud)
这就是异常处理的目的:
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."
Run Code Online (Sandbox Code Playgroud)
那么父函数将不会捕获异常,并且它将继续在堆栈中向上查找,直到找到捕获异常的人。
如果你想重新抛出相同的异常,你可以使用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."
Run Code Online (Sandbox Code Playgroud)
或者,您可以Exception通过说类似 的内容将 转换为更具体的内容raise ASpecificException。
| 归档时间: |
|
| 查看次数: |
4395 次 |
| 最近记录: |