Handling different error types(处理不同的错误类型)
在出错的情况下,您可能需要处理:
provider.request(target) { result in
switch result {
case let .success(response):
// Do sg on success
case let .failure(error):
// Handle error here
}
}
或者 使用RxSwift的方式
.doOnError { error in
// Handle error here
}
你可以使用switch处理不同的MoyaError的情况。在处理.Underlying的错误情况下,你还可以得到原始的NSError和它的属性,比如,code(表示,NSURLError或者NSURLErrorTimedOut或者NSURLErrorNotConnectedToInternet)
switch error {
case .data(let response):
print(response)
case .imageMapping(let response):
print(response)
case .jsonMapping(let response):
print(response)
case .statusCode(let response):
print(response)
case .stringMapping(let response):
print(response)
case .underlying(let nsError):
// now can access NSError error.code or whatever
// e.g. NSURLErrorTimedOut or NSURLErrorNotConnectedToInternet
print(nsError.code)
print(nsError.domain)
}
总结 这小节的核心:
- swith中处理各种类型的错误