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

这些网络错误是来自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网络高级编程。

iOS 网络错误-分类的更多相关文章

  1. 【读书笔记】iOS网络-错误处理的经验法则

    一,在接口契约中处理错误. 二,错误状态可能不正确. 设备模糊地确认操作是崇拜失败的.比如,移动应用发出HTTP请求以在两个账户间转账.请求被银行系统接收并正确地处理:然而,由于网络失败应答却丢失了, ...

  2. 【读书笔记】iOS网络-三种错误

    一,操作系统错误. iOS人机界面指南中,Apple建议不要过度使用AlertViews,因为这会破坏设备的使用感受. 操作系统错误: 1,没有网络. 2,无法路由到目标主机. 3,没用应和监听目标端 ...

  3. 【读书笔记】iOS网络-理解错误源

    考虑一个字节是如何从设备发往运程服务器以及如何从远程服务器将这个字节接收到设备,这个过程只需要几百毫秒时间,不过确要求网络设备都能正常工作才行.设备网络和网络互联的复杂性导致了分层网络的产生.分层网络 ...

  4. iOS网络高级编程:iPhone和iPad的企业应用开发之错误处理

    本章内容 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWluZ2h1YXdlbmthbmc=/font/5a6L5L2T/fontsize/400/fi ...

  5. ios网络学习------6 json格式数据的请求处理

    ios网络学习------6 json格式数据的请求处理 分类: IOS2014-06-30 20:33 471人阅读 评论(3) 收藏 举报 #import "MainViewContro ...

  6. iOS网络相关知识总结

    iOS网络相关知识总结 1.关于请求NSURLRequest? 我们经常讲的GET/POST/PUT等请求是指我们要向服务器发出的NSMutableURLRequest的类型; 我们可以设置Reque ...

  7. 【读书笔记】iOS网络-使用Game Kit实现设备间通信

    Apple的Game Kit框架可以实现没有网络状况下的设备与设备之间的通信,这包括没有蜂窝服务,无法访问Wi-Fi基础设施以及无法访问局域网或Internet等情况.比如在丛林深处,高速公路上或是建 ...

  8. 【读书笔记】iOS网络-同步请求,队列式异步请求,异步请求的区别

    一,同步请求的最佳实践. 1,只在后台过程中使用同步请求,除非确定访问的是本地文件资源,否则请不要在主线程上使用. 2,只有在知道返回的数据不会超出应用的内存时才使用同步请求.记住,整个响应体都会位于 ...

  9. ios网络学习------4 UIWebView的加载本地数据的三种方式

    ios网络学习------4 UIWebView的加载本地数据的三种方式 分类: IOS2014-06-27 12:56 959人阅读 评论(0) 收藏 举报 UIWebView是IOS内置的浏览器, ...

随机推荐

  1. ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解

    原文 ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 在教程的这一部分,我们将研究一下自动生成的 Details 和Delete 方法. Details 方法 打开M ...

  2. Arduino 入门程序示例之一排 LED(2015-06-11)

    概述 最简单的一个 LED 的实验之后,自然是增加几个 LED,咱排成一排来玩吧.最后,再把一排的 LED 排成一个 8 字来玩——七段数码管. 示例程序 流水灯 第一个出场的肯定是经典的流水灯,也叫 ...

  3. Linux -FHS 标准

    FHS (Filesystem Hierarchy Standard),其目的是让用户可以了解以安装软件通常放在那个文件下面. /bin 放置的是单用户维护模式下,能够被调用的命令.主要有cat,ch ...

  4. Android dialog 问题

    1.dialog.dismiss和dialog.cancel的区别 Cancel the dialog. This is essentially the same as calling dismiss ...

  5. spring MVC 如何获取session并实现传值到前台

    后台获取session: @RequestMapping("/usrlogin") public ModelAndView usrlogin(@RequestParam Strin ...

  6. Robot Framework与Web界面自动化测试学习笔记:定位到新窗口

    在页面操作中,有时会需要打开新的窗口(新的网页不在当前窗口显示,而是在新的tab页显示), 比如利用  window.open("newurl") 或者  <a href=& ...

  7. 利用opencv中的级联分类器进行人脸检測-opencv学习(1)

    OpenCV支持的目标检測的方法是利用样本的Haar特征进行的分类器训练,得到的级联boosted分类器(Cascade Classification).注意,新版本号的C++接口除了Haar特征以外 ...

  8. Swift - 使用UI Dynamics给UIKit组件添加重力和碰撞行为

    UI Dynamics是UIKit的一个新组成部分,它向iOS中的视图提供了与物理学有关的功能和动画.可以让你向视图中引入力和物理属性,可以让你的视图弹跳,舞动,受重力影响等等. 下面通过样例,演示使 ...

  9. PHP - 拒绝低版本PHP

    //判断PHP版本是否太低 if (PHP_VERSION < '4.1.0') { echo 'Version is to Low!'; exit; }

  10. 大白痴学习webmagic

    摘要 webmagic 学习 从头 刚刚开始学,很多东西可能理解错了,还请各位指教 一些基本类: Request:包含要爬行的url和一些附加信息,是Page的一个成员变量 主要成员变量 String ...