我使用execnet从python脚本中调用jython模块。在
从docs:
Note that exceptions from the remotely executing code will be reraised as channel.RemoteError exceptions containing a textual representation of the remote traceback.
假设我的远程模块可能导致两个不同的异常,我希望能够以不同的方式处理每个异常。如果两个异常都将引发一个仅包含一个回溯字符串的RemoteError
异常,我将如何处理这一问题?在
例如,这个特定的调用代码:
#...
channel.send('bogus')
结果如下RemoteError
,它只包含一个属性formatted
,该属性包含一个回溯字符串:
我不能做try ... except IOError:
。我可以做一个try ... except RemoteError as ex:
并解析ex.formatted
,看看它是否包含IOError
,然后再将其引发,但这看起来相当草率:
from execnet.gateway_base import RemoteError
try:
channel.send('bogus')
except RemoteError as ex:
if 'IOError' in ex.formatted:
raise IOError(ex.formatted[ex.formatted.find('IOError'): -1])
if 'ValueError' in ex.formatted:
raise ValueError(ex.formatted[ex.formatted.find('ValueError'): -1])
# otherwise, reraise the uncaptured error:
raise ex
一个老问题-我试着回答
相关问题 更多 >
编程相关推荐