问题描述
|
好的,所以,我正在编写一个带有显示错误消息的函数的Python(v2.7)代码。但是还有一些其他功能依赖于此原始错误检查功能。
现在,当调用此错误检查函数时,如果有错误,我希望显示一个错误,然后调用调用此错误函数的函数。
例如,如果
function1()
调用了error()
并且没有错误,则error()
函数将无济于事。现在,function1()
叫function2()
。当function2()
调用error()
函数时,它将检测到错误,显示错误消息,然后再次调用function2()
。这是我想要做的,但是我不知道如何再次返回调用函数。
解决方法
隐式地回忆起调用函数必然会导致无限循环,错误(除非您绝对确保所有调用错误的方法都是幂等的,即使在过早中止的情况下也是如此),混乱以及无论如何都是完全不合逻辑的。您正在寻找的只是常规错误处理:
def f2():
try:
1/0 # complicated code,potentially raising an error
except ZeroDivisionError: # Or BaseException,if you gotta catch them all
error()
# clean up,restore a consistent state
# go on,no matter whether the error occurred or did not
如果只是重试有帮助,您只需将其写出即可:
def sometimes_fails():
1 / random.randint(0,1)
def f():
while True:
try:
sometimes_fails()
except ZeroDivisionError:
continue # try again
break # abort
对于非常不寻常,极其复杂(幂等)的行为使用通用名称(如“ 10”),因此易出错的行为不是一个好主意。
answer11ѭ带给您这个答案。
, phinag正确地提到这是一个坏主意。但是,如果仍然需要,ѭ12模块可以提供帮助:
import inspect
def foo():
print globals().get(inspect.stack()[1][3]
def baz():
foo()
baz() # prints <function baz at 0x0...>