首页 > 编程语言 >CS应用程序开发中的异常处理

CS应用程序开发中的异常处理

时间:2022-12-02 16:02:20浏览次数:36  
标签:程序开发 网络 重试 预定 CS 服务器 异常 客户端


    我们在进行网络应用程序开发时(主要是CS架构的应用程序)要面对很多异常情况的处理,这些异常中有些是服务器端主动抛出的异常,客户端要按照事先约定好的规则分类处理;有些是客户端进行参数合法性检查产生的异常,需要提示给用户知道;还有诸如网络连接异常、数据传输异常等等。要让我们的网络程序框架有足够的弹性,更好的适应未来需求的变化,我们非常有必要将这些异常做一个细致、精确的归类。

        依据我个人的开发经验来看,网络应用程序开发过程中的异常主要可以分为3大类,分别是网络异常、本地异常和服务器异常。

        网络异常,指由于网络链路问题,无法和服务器建立连接完成通信,或者连接被异常中断(包括发送超时、接收超时等)导致服务无法完成等。产生这类异常的原因主要可以分为2类,一类是客户端没有接入网络,和任何机器都无法建立连接;另一类则是客户端和指定服务器的通信链路不通,通常会产生10060错误码,这个原因可能是服务器故障或宕机造成无法响应客户端连接请求,或者是由于通信线路问题无法和服务器建立连接(网络拥塞、跨地区、跨运营商设备等原因引起)。对于第二类问题,我们通常可以采用重试机制,尝试解决建立连接的问题,尤其是在网络高峰时段、服务器负载过重的情况下,这种方式就显得尤为重要。

        本地异常,通常是由本地应用程序主动生成并抛出的异常,主要指参数合法性检查失败、业务逻辑处理时产生的异常等信息,这类异常主要起提示用户的作用。比如我们在做文件下载功能时,通常需要对已经下载完成的文件进行MD5码校验,以检查网络下载过程中是否发生错误,如果MD5校验失败,我们客户端应用程序就要主动抛出“文件数据传输出错”的异常,这一类异常通常不需要重试机制。

        服务器异常,顾名思义,指通信过程中服务器端抛出的异常,主要分为预定义异常和非预定义异常。预定义异常通常带有异常码、错误提示及附加参数等信息,由客户端和服务器端协商确定,客户端收到预定义异常时,需要根据具体的异常码进行处理,比如账户异常时,需要弹出一个账户密码输入对话框出来,用户可以修改账户密码后重试也可以取消操作;再如客户端收到未购买VIP服务异常时,需要弹出一个带有购买VIP服务链接的对话框出来等等。非预定义异常是指服务器应用未处理的异常,由webservice框架,或者直接由web容器抛出的异常,产生这类异常可能是因为服务器应用程序对可以预期的异常忘记进行处理(开发和测试过程中应解决),或者服务器系统运行时产生了异常(系统负载过重、打开文件描述符个数过多等)。针对非预定义异常(我们假设非预定义异常均由服务器系统运行时异常导致),我们也应该采用重试机制,这样可以在一定程序上提高网络服务的成功率。

       注意,这里提到的网络异常、服务器异常中的非预定义异常的定义,都是假设在服务应用程序代码没有错误的前提下进行的。正确的定义异常,对我们决定是否启用重试机制非常重要,如果是服务器端代码错误,导致网络异常、或非预定义异常产生,客户端即使重试1000次终究还是失败!

标签:程序开发,网络,重试,预定,CS,服务器,异常,客户端
From: https://blog.51cto.com/u_11295556/5907113

相关文章

  • 微服务之分布式搜索引擎elasticsearchDSL查询功能
    DSLQuery的分类Elasticsearch提供了基于JSON的DSL(DomainSpecific Language)来定义查询。常见的查询类型包括:查询所有:查询出所有数据,一般测试用。例如:match_all全文检......
  • VCenter的VCSA6.7安装指南
    Linux和Windows下的两个版本Linux版本:VMware-VCSA-all-6.7.0-8217866.iso执行安装程序直接在Windows系统上,安装完成后会在ESXI6.7中形成新的Linux虚拟机。执行安装程序的......
  • JAVA面试题--Elasticsearch
    Elasticsearch1.为什么要使用Elasticsearch?2.Elasticsearch是如何实现Master选举的?3.Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个ma......
  • pd drop_duplicates返回结果count和to_csv的结果不一致
    目的是从表中找出不重复的公司个数,一开始采用了drop_duplicates获取一个去重后的表,count()后发现是500多家,神奇的是当我将结果导入csv,发现只有不到100条。然后我采用groupby......
  • 7.第三章第3节: 2021.10.30 异常处理与日志
                     ......
  • VMware VCSA 6.7配置vSAN存储
    一、建存储网络1、点击主机右键新建网络 2、选择连接类型 3、选择目标设备 4、分配适配器 5、填写端口属性 6、配置存储网......
  • css总结
    目录1.网页样式1.1引入方法1.1.1内联样式1.1.2内部样式表1.1.3链接外部样式1.1.4导入外部样式1.2基础语法1.3选择器的分类1.3.1标记选择器1.3.2通用选择器对所有元素都......
  • Atlas 启动异常问题汇总
    org.janusgraph.diskstorage.XX关键错误:Couldnotinstantiateimplementation:org.janusgraph.diskstorage.XXX可能原因及排查:如果出现这种错误就注意看一看对应的XX......
  • CSS基础(五)
    新增语义化标签着重'语义',着重'颜值'-section:一个内容区块-article:与上下文无关的独立内容-aside:与article搭配使用,与article内容相关的辅助信息......
  • ElasticSearch
    `ElasticSearch1.什么是ElasticSearchElasticSearch简称ES,是基于ApacheLucene构建的开源搜索引擎,是当前流行的企业级搜索引擎(分布式搜索引擎)。Lucene本身就可以......