【发布时间】:2017-05-10 16:28:56
【问题描述】:
我有一些在链中调用的函数,我需要在这些函数上引入 try/except 块来处理我正在使用的库引起的异常。
我试图了解这是否安全,更具体地说,如果我们总能期望 try/except 块在执行流程中看不到更深的 try/except 块:
def level_two_function():
try:
return a[i]
except:
return "Exception at level 2"
def level_one_function():
try:
return level_two_function()
except:
return "Exception at level 1"
level_one_function() # 'Exception at level 2'
level_one_function 的 try/except 块在任何情况下都见过level_two_function 引发的任何异常吗?
与以下情况相比,行为如何?
def work(token, restrictions):
def loop(token):
if token.text in restrictions:
try:
return loop(token.nbor())
except IndexError:
return token
else:
return token
try:
start = token.nbor()
return loop(start)
except IndexError:
# if it has no neighbor just return it
return token
【问题讨论】:
-
这里没有递归;这些函数中的任何一个都不会在任何地方调用自身。然而,并不是说递归调用的答案会有所不同。
-
我知道,我只是提供一个嵌套级别的示例。那么返回异常只适用于递归调用?
-
不,调用是否递归无关紧要。
标签: python recursion exception-handling