如何嵌套低级错误和更高级错误?

时间:2016-02-06 00:14:50

标签: swift

我有一个自定义错误类型,用于低级别的HTTP问题:

enum APIClientError: ErrorType {
    case NetworkError
    ...
}

在更高级别的图层中,我有另一种错误类型:

enum SignInError: ErrorType {
    case InvalidUser
    ...
}

我遇到的问题是那些APIClientError个实例需要冒泡到更高级别的层,而在我的函数中,我需要返回APIClientError,可能是SignInError。< / p>

如何声明这样的函数?我试过了

typealias LoginResult = Result<SuccessType, ErrorType>

但我不行('使用ErrorType'作为符合协议''ErrorType'的具体类型不受支持'。

如何在Swift中嵌套来自不同图层的错误类型?

1 个答案:

答案 0 :(得分:0)

我也对此感到头疼。我能想到的唯一方法就是这样:

 enum APIClientError: ErrorType {
   case NetworkError
   ...
 }


 enum SignInError: ErrorType {
   case InvalidUser
   //note, the name of the case can't be the same as the type of the error due to compiler errors
   case APIError(APIClientError)
 }

这样一来,错误就会冒出来。唯一令人讨厌的事情是通过处理错误的代码展开多个级别的错误嵌套。