def check():
if (cond):
how to return back to explore()
else:
return 1 # here return to f2
def cannot_be_modified():
try:
check() # inserted
print("hello from cannot_be_modified")
return 2
except Exception as e:
print(e)
def explore():
cannot_be_modified()
print("hello from explore")
return 0
explore()
调用堆栈为:explore() -> cannot_be_modified() --> check()
如果我在check
满足一些条件,我想退出check
并cannot_be_modified
,然后再回到explore
。 那么我该如何才能做到这一点呢?
我想过check
函数中引发特定类型的异常并在explore
中捕获它,但该异常可以在函数cannot_be_modified
中捕获
有人有想法吗?
谢谢
即使它不是最优雅的解决方案,您也可以决定在check
函数中引发异常(内置或自定义(,并在explorer
函数中捕获该异常。确保您只捕获异常。
def check():
if True:
raise ValueError("MyError")
else:
return 1 # here return to f2
def cannot_be_modified():
check() # inserted
print("hello from cannot_be_modified")
return 2
def explore():
try:
cannot_be_modified()
except ValueError as e:
print(e)
print("hello from explore")
return 0
explore()
输出:
MyError
hello from explore