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
中捕获
有没有人有想法?
由于
答案 0 :(得分:1)
即使它不是最优雅的解决方案,您也可以决定在check
函数中引发异常(built-in或custom)并将其捕获到{ {1}}功能。请确保您只捕获您的例外。
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()