`

如何处理网络异常的浅见

 
阅读更多

 

     虽然说网络连接在大多数情况下,都是正常的,但大家在互联网上冲浪的时候,肯定都遇到过网络不正常的情况,比如大家在上XX网站的时候,经常会被提示:该网站暂不可用/该访问被拒绝/找不到该网站等等,你懂得。因此,网络是不可靠的,我们在网络编程的时候,也要时刻记住,网络是不可能一直正常的,在实现任何涉及网络连接的功能时,都必须考虑到如何处理各种网络异常。比如,有两个业务系统A和B,A需要调用B的某个服务,那么我们在设计和实现这个功能的时候,就不能认为系统A总是能够成功连接上系统B,并且还能成功从系统B返回其所需要的数据。合理的思维流程应该是这样的:我们把系统A调用系统B的服务这一过程细分为以下几个阶段:

  1. A连接B
  2. A发送数据给B
  3. B执行A请求的服务
  4. B将结果返回给A

    在这上面的四个阶段1, 2, 4都可能会发生各种IOException,在阶段1中,系统A在请求连接系统B的时候,可能发送以下异常:UnknownHostException,UnknownServiceException或者PortUnreachableException等;在阶段2和4中,就可能发生SocketTimeoutException等。

 

     既然我们知道网络是不稳定的,会发生各种异常情况,那么我们要做的除了捕获这些异常,更重要的是还要处理这些异常。同样以我们浏览XX网站为例,当我们发现XX网站不能访问时,无非采取以下做法:

  • 隔一段时间刷新下页面,看是不是能访问了
  • 看看是不是这个网站被屏蔽了,需要启用代理来访问
  • 看看是不是这个网站的域名变更了
  • 既然上不了,那哥就不上了,你爱咋咋得;
  • 既然上不了,拿哥通过google/baidu找另外的XX网站

     那么我在网络编程的时候遇到上面提到的各种IOException,采取的措施无非也是这几个做法的抽象而已。

 

  1. 不停刷新----系统A不停重试系统B的服务,直到成功为止
  2. 启动代理访问---看是不是权限不够,通过代理去调用系统B
  3. 域名变了----更换请求地址,重新请求
  4. 哥不上了----不再请求系统B的服务,系统A去执行其它的业务逻辑
  5. 找另外的XX网站---变更服务提供方,比如系统A去向back up的系统请求服务

 

    以上就是对网络异常的认识以及处理方法的一点自己的总结,记录下来,以便以后查看和改进。

 

 

 

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics