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

这些网络错误是来自client还是server。

我们来梳理一下:

我们将错误分为三个大类

  1. 操作系统错误
  2. http请求错误
  3. 应用错误
1.操作系统错误是因为数据包没有到达预定目标导致的,造成原因可能有:
  1. 没有网络——没有连接网络
  2. 无法路由到目标主机——主要是因为目标主机可能位于隔离网络或者处于离线状态。导致的。

  3. 没有应用监听目标port——请求到达目标主机后数据包会发送到指定的port号。假设server没有监听这个port号或者是有太多的请求在排队那么连接请求就会被拒绝。
  4. 无法解析目标主机名——URL载入系统会返回错误。

    通常这些错误由配置错误或是尝试訪问没有外部名字解析且处于隔离网络中的主机造成的。

在iOS的URL载入系统中,操作系统错误会以NSError对象的形式发送给应用。ios通过NSError在软件中传递错误信息。使用NSError的主要优势在于NSError对象包括了错误域属性;
有非常多网络请求问题是由于网络没有连接造成的,所以我们每次进行网络请求的时候都须要进行检查。由于移动设备会移动出网络。这里我们通常採用Reachability。

http错误:
http错误是因为http请求。httpserver或应用server的问题造成的。http错误通过http响应的状态码发送给请求client。
5类http错误
  • 信息性质的100级别——来自httpserver的信息,请求的处理将会继续,只是带有警告。
  • 成功的200级别——服务请接受了请求。
  • 重定向须要的300级别——资源已经移动了须要重定向。
  • client错误400级别——表示client发出了server无法正确处理错误的数据,比如不对的http头导致这个范围错误。
  • 下游错误500级别——表示httpserver与下游应用server之间出现了错误。

应用错误
这些错误是是由执行在服务层之上的业务逻辑和应用造成的。
错误可能是代码问题,比如异常,也可能是语义问题。比方向服务提供了无效账号等。
又比如银行卡中有500元钱而你要提1000元现金,这就会错误发生。


来自ios网络高级编程。

最新文章

  1. Java 内存区域与内存溢出
  2. java版模拟浏览器下载百度动漫图片到本地。
  3. python 3 字符串转 json
  4. The tag 'DataGridTextColumn' does not exist in XML namespace ....
  5. 活学活用,webapi HTTPBasicAuthorize搭建小型云应用的实践
  6. 二、MongoDB的基础知识简介
  7. android的入门学习
  8. SQL Server Profiler监控SQL Server性能
  9. XShell 屏幕锁定的恢复方法(Ctrl+Q)
  10. Linux 分区的概念
  11. 初入HTML5
  12. Node.js 加密
  13. [再寄小读者之数学篇](2014-05-27 矩阵的迹与 Jacobian)
  14. lsof/netstat命令的一个重要作用: 根据进程查端口, 根据端口查进程
  15. NullReferenceException 的可恨之处
  16. Java ---- 遍历链表(递归与非递归实现)
  17. C#生成树形结构泛型类
  18. 【python】confluent_kafka将offset置为最大
  19. saltstack 安装
  20. 对比各节点host 与 标准节点host差异脚本

热门文章

  1. php 解析url 和parse_url使用
  2. 基于visual Studio2013解决C语言竞赛题之0601判断素数函数
  3. 菜鸟学习SSH(二)——Struts国际化
  4. xmlns:android="http://schemas.android.com/apk/res/android的作用是
  5. Introduction to the Build Lifecycle
  6. 道可叨 | Python 标准库 urllib2 的使用细节
  7. 全陷阱破解:在Linux环境下的Jenkins中持续集成Androidproject
  8. [置顶] Hibernate从入门到精通(七)多对一单向关联映射
  9. 在Service中使用广播接受者
  10. Unicode编码(转)