首页 > 代码库 > iOS 网络错误-分类

iOS 网络错误-分类

在进行网络数据交换的时候总是遇到各种各样的错误。

这些网络错误是来自客户端还是服务器。

我们来梳理一下:

我们将错误分为三个大类

  1. 操作系统错误
  2. http请求错误
  3. 应用错误
1.操作系统错误是由于数据包没有到达预定目标导致的,造成原因可能有:
  1. 没有网络——没有连接网络
  2. 无法路由到目标主机——主要是由于目标主机可能位于隔离网络或者处于离线状态,导致的。
  3. 没有应用监听目标端口——请求到达目标主机后数据包会发送到指定的端口号,如果服务器没有监听这个端口号或者是有太多的请求在排队那么连接请求就会被拒绝。
  4. 无法解析目标主机名——URL加载系统会返回错误。通常这些错误由配置错误或是尝试访问没有外部名字解析且处于隔离网络中的主机造成的。
在iOS的URL加载系统中,操作系统错误会以NSError对象的形式发送给应用。ios通过NSError在软件中传递错误信息。使用NSError的主要优势在于NSError对象包含了错误域属性;
有很多网络请求问题是由于网络没有连接造成的,所以我们每次进行网络请求的时候都需要进行检查,因为移动设备会移动出网络。这里我们通常采用Reachability;

http错误:
http错误是由于http请求,http服务器或应用服务器的问题造成的。http错误通过http响应的状态码发送给请求客户端。
5类http错误
  • 信息性质的100级别——来自http服务器的信息,请求的处理将会继续,不过带有警告。
  • 成功的200级别——服务请接受了请求。
  • 重定向需要的300级别——资源已经移动了需要重定向。
  • 客户端错误400级别——表示客户端发出了服务器无法正确处理错误的数据,例如不正确的http头导致这个范围错误。
  • 下游错误500级别——表示http服务器与下游应用服务器之间出现了错误。
应用错误
这些错误是是由运行在服务层之上的业务逻辑和应用造成的。
错误可能是代码问题,例如异常,也可能是语义问题,比如向服务提供了无效账号等。
又例如银行卡中有500元钱而你要提1000元现金,这就会发生错误。


来自ios网络高级编程。

iOS 网络错误-分类