Kotlin 使用Kovenant链接具有自定义错误类型的承诺

Kotlin 使用Kovenant链接具有自定义错误类型的承诺,kotlin,kovenant,Kotlin,Kovenant,我正在使用翻新来访问RESTAPI,我想使用Kovenant的then函数来链接几个工作单元。换句话说,我希望将一个API调用的输出作为参数提供给另一个API调用 我定义了一个自定义错误类型,其中包含一个属性,该属性包含API特定的错误代码,定义如下: class ApiError(val statusCode: Int, val apiErrorCode: Int, val message: String) 如果在API调用过程中发生错误,将使用适当的错误代码创建此类的实例 根据Kovena

我正在使用翻新来访问RESTAPI,我想使用Kovenant的then函数来链接几个工作单元。换句话说,我希望将一个API调用的输出作为参数提供给另一个API调用

我定义了一个自定义错误类型,其中包含一个属性,该属性包含API特定的错误代码,定义如下:

class ApiError(val statusCode: Int, val apiErrorCode: Int, val message: String)
如果在API调用过程中发生错误,将使用适当的错误代码创建此类的实例

根据Kovenant的文档,我可以创建一个延迟实例来获得承诺。我希望我能为泛型参数E提供APIRERROR。在Kovenant的延迟定义中,我没有看到任何泛型约束要求E是一个例外

也就是说,当我尝试使用then链接两个返回PROMITE的函数时,我收到一个编译器错误,指出then的预期类型是PROMITE


我能让Kovenant与自定义错误类型一起工作吗?如果不能,是否将Exception子类化以包含我需要的属性?对于我试图实现的目标,我需要正确的解决方案?

一些基本定义没有E的通用边界,但几乎所有扩展函数都表明E属于Exception类型。查看Kovenant中的源代码可以清楚地看到,大多数东西都有这样的期望

您只需将错误类更改为异常的后代:

然后,你可以抛出它来违背承诺,或者用它来调用延期的失败

class ApiError(val statusCode: Int, val apiErrorCode: Int, message: String) : Exception(message)