【问题标题】:NSError from HTTP status code来自 HTTP 状态码的 NSError
【发布时间】:2015-04-27 23:13:32
【问题描述】:

根据标准 HTTP 状态代码(理想情况下,在 localizedDescription 中包含一些人类可读消息)创建 NSError 对象的最佳方法是什么?是否有标准方法或者我应该创建自己的错误域以与NSError 一起使用?

【问题讨论】:

标签: objective-c cocoa-touch nsurlconnection


【解决方案1】:

Foundation 执行网络请求的对象通常会为您返回这些NSErrors。例如,NSURLConnection 将在其+sendAsynchronousRequest:queue:completionHandler: 方法的completionHandler 中提供NSError

如果您想自己动手,可以创建一个NSError 的实例,将其错误域设置为NSURLErrorDomain,将其code 设置为您想要的HTTP 状态代码,然后将其设置为localizedDescription 成为您需要的人类可读字符串。

【讨论】:

  • 在我看来,将自己的错误代码添加到我无法控制的域是一个坏主意。
  • 是的,你也可以有自己的错误域,这可能无法回答你有股票 NSURLErrors 的问题
  • 当连接成功,服务器返回错误码时,传递给completionHandlerNSError?nil
  • 如果这个答案是正确的,我会喜欢它,但它似乎是错误的。我检查过的最明显的状态码——404 和 500——根本不返回任何NSError,只返回nil
  • 这是不正确的——只有在 NETWORKING 层失败时才会创建 NSError。如果联网成功,并且服务器发送了 402 状态,则不会创建 NSError。我一直在寻找这样的代码来为大量的 http 状态场景构建一个健壮的 NSError 表示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
  • 1970-01-01
  • 1970-01-01
  • 2013-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多