使用ReturnValu时出现扭曲异常

2024-06-01 08:44:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我在函数中使用returnvalue时遇到了这个异常

@inlineCallbacks    
def my_func(id):
  yield somefunc(id)

@inlineCallbacks
def somefunc(id):
  somevar = yield func(id) 
  returnValue(somevar)



returnValue(somevar)
File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 1105, in returnValue
raise _DefGen_Return(val)
twisted.internet.defer._DefGen_Return:

该函数工作正常,但引发了一个异常。 我怎样才能避免这种例外?我只需要从函数中返回一些值。在


Tags: 函数idreturndeftwistedinternetdeferfunc
2条回答

returnValue使用异常技巧返回值/s。 这是正常的,异常不会引起任何错误。在

详细信息: @inlinecallback装饰器看起来像

def decorator(...)
   try:
       .... (func call & other logics)
   except Exception as myExcept:
       return myExcept.values

当使用inlineCallbacks时,您必须生成一个延迟的-在本例中,my_func中的yield正在生成{}(我假设这是一个延迟的),但是随后调用了不允许的returnValue。在

你可以做一些类似的事情:

@inlineCallbacks    
def my_func(id):
   somevar = yield somefunc(id)

@inlineCallbacks
def somefunc(id):
    yield func(id) 

相关问题 更多 >