【发布时间】:2016-06-07 17:44:28
【问题描述】:
我正在使用 Twisted Klein 开发异步 Web 服务。部分代码如下:
@inlineCallbacks
def test(input1):
try:
result = yield function(input1)
print result
returnValue(result)
except:
returnValue("None")
pass
我将这个test 函数作为我的Web 服务的一部分,每次我从其他函数调用test 函数时都返回“无”。但是,在服务器屏幕上,它会打印出我想要的正确结果(try 中的print result 行已正确执行,只是未使用returnValue(result))。我对异步编码不是很熟悉,但是除了与yield一起尝试之外,还有什么我应该小心的吗?谢谢。
【问题讨论】:
-
你为什么使用一个裸露的
except?您应该捕获您期望的特定异常类型。我对 Twisted Klein 了解不多,但是通过 Google 快速搜索显示它们是 using exceptions to simulate coroutines,所以一个裸露的except会很难搞定。 -
所以我从一个烧瓶代码修改了这个,我正在调用一个可能会抛出异常的 api,我不希望它崩溃,所以我使用 try/except 来做到这一点。也许我应该删除那个裸露的除外,看看它是如何工作的?
-
在我删除了裸露的除外之后它实际上工作了。我想我需要从 api 中指定所有可能的异常。我希望将您标记为正确答案,但您在评论中