我使用的是python 2.7,龙卷风4.5
以下代码不起作用: except 块不会被触发。我不明白为什么?
@gen.coroutine
def co_do_thing():
yield gen.Task(do_thing)
def do_thing(callback):
try:
a, b = ...
result = maybe_throw(a, b, callback)
except Exception as e:
# this block is not called
if a:
raise ApiError("called with A")
elif b:
raise ApiError("called with B")
else:
raise e
def maybe_throw(arg1, arg2, callback):
if random.random() < 0.5:
raise AssertionError("yikes")
callback("done")
co_do_thing相反,我可以在调用周围捕获异常gen.Task;但后来我不知道我如何调用的上下文maybe_throw。maybe_throw就我而言,引发较低级别的异常并让调用者根据输入将其转换为人类可读的错误更有意义。
我是否只需要重构它以在较低级别调用 gen.Task ?那会很烦人:/
暮色呼如
相关分类