0

我正在构建一个 SDK。

基本上,开发人员会传入一个错误处理函数,该函数将在进行 API 调用时发生错误时被调用。

对于 API 错误(或 API 返回的错误),我使用域 ExampleAPPDomain 创建一个 NSError。ApI 错误具有不同的 userInfo 结构(例如,我在用户信息中添加了一个“类别”键)。

但有时错误是 nsurlconnection 错误......我也将该错误传递给错误处理程序。

所以我打电话:

errorHandler(error)

有时传递给 errorHandler 函数的 NSError 错误是 API 错误,有时是 NSUrlConnection 类型的错误(如网络错误)。

我怎样才能最好地以不同的方式处理这些错误?例如,在错误处理程序代码中,开发人员必须检查错误的域以查看它是什么类型(NSURLDomain 与 ExampleAPPDomain)并相应地处理它。这是区分两种错误的唯一方法。

对于这样的事情,处理 APP 错误与 NSUrlConnection 连接错误的标准方法是什么?

4

1 回答 1

0

为什么不总是给他们 ExampleAppDomain 作为错误的域。这样就没有混乱了。大多数标准库都这样做 - 封装所有错误。本质上,当您收到错误时,您需要将其与您的域包装在 NSError 中。您可以检查响应的 NSURLConnectionDelegate 的可接受的 statusCode 和内容。此外,与其自己处理所有网络代码,不如使用像 AFNetworking 这样的标准库?

这是一个代码,但您必须根据 XML/JSON 检查可接受的代码/内容。以下是 AFNetworking 的摘录。

NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
[userInfo setValue:self.responseString forKey:NSLocalizedRecoverySuggestionErrorKey];
[userInfo setValue:[self.request URL] forKey:NSURLErrorFailingURLErrorKey];
[userInfo setValue:self.request forKey:ExampleAppDomainFailingURLRequestErrorKey];
[userInfo setValue:self.response forKey:ExampleAppDomainOperationFailingURLResponseErrorKey];


NSError *error = [[NSError alloc] initWithDomain:ExampleAppDomain code:NSURLErrorBadServerResponse userInfo:userInfo];

检查 NSURLError.h 文件以获取更多错误信息。

于 2013-10-15T20:53:33.803 回答