资讯专栏INFORMATION COLUMN

Web全栈应用之旅-基础篇(二)异常设计

MudOnTire / 326人阅读

摘要:异常堆栈开发过程中,不可避免的会有未考虑的异常场景,堆栈信息可以帮助快速解决故障。异常日志有时候需要借助异常堆栈信息定位错误原因,而用户未必能记得和反馈错误堆栈信息,此时要么是自行复现错误来定位,要么是通过历史错误日志定位。

一、异常设计

异常设计主要考虑以下方面:

二、异常信息

异常信息包含:

错误码:异常的唯一编码。

错误描述:告知使用者和调用方的描述信息。

异常堆栈:Java开发过程中,不可避免的会有未考虑的异常场景,堆栈信息可以帮助快速解决故障。

异常变量:错误描述中可替换的变量,变量的实际取值可以帮助快速查找错误原因,例如:

ERR-1001=用户证件错误,用户ID:{}

其中ERR-1001是错误码,后面是错误描述,{}为可替换的变量,实际异常抛出时,可传入变量,由异常框架来统一处理。

三、异常分类

异常分类的作用是根据不同的异常类型可以走不同的处理分支,如果有这样的需要,可以对异常分类,否则可以不做区分,统一使用一个异常类则可。另外,通过对错误码分类也可以达到走不同处理分支目的,所以异常分类并不是必须的,而且定义多了使用时还得思考应该用哪一个,个人倾向简化处理。

四、处理策略

捕捉时机:在实际Java代码中,调用链可能如下:


那么异常该在哪里捕捉?
建议是:如果不因异常而改变处理逻辑,就不需要捕捉异常,一直向上抛,让公共框架统一处理然后返回给前端。这样做的好处是逻辑统一,也不需要伤脑筋思考到底要不要捕捉异常。

异常日志

有时候需要借助异常堆栈信息定位错误原因,而用户未必能记得和反馈错误堆栈信息,此时要么是自行复现错误来定位,要么是通过历史错误日志定位。通过错误日志定位就要将错误信息记录下来,一般通过文件日志记录,也可以采集后记录到数据库中,方便查询,入库时为了避免错误日志太多,可以考虑将堆栈信息的hash值也记录下来,对于hash值重复的异常,只需要更新最后发生时间,这样就能减少异常日志的大小。

异常界定

异常界定主要考虑查询不到数据时是否要作为异常返回,对此不应作为异常,而是由调用方自行判断是否要作为错误。

end.

站点: http://javashizhan.com/

微信公众号:

加入知识星球,参与讨论,更多实战代码分享!
https://t.zsxq.com/RNzfi2j

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/76020.html

相关文章

  • Web全栈应用之旅-基础(一)前后端接口

    摘要:一前后端接口设计前后端接口设计主要考虑以下几点二接口内容接口内容包括鉴权信息,如用于身份识别的。公共信息,例如用户,项目等需要传给后端的公共数据。 一、前后端接口设计 前后端接口设计主要考虑以下几点: showImg(https://segmentfault.com/img/bVbwc4u?w=2095&h=891); 二、接口内容 接口内容包括: 鉴权信息,如用于身份识别的t...

    lindroid 评论0 收藏0
  • Web应用全栈之旅-Spring)集成mybatis

    摘要:五中调用以上为集成的所有步骤,完整实例代码扫码加入微信公众号并回复,获取仓库地址。站点微信公众号加入知识星球,参与讨论,更多实战代码分享 一、pom文件 引入mybatis org.mybatis.spring.boot mybatis-spring-boot-starter 2.1.0 ...

    baishancloud 评论0 收藏0
  • Web全栈应用之旅-启程

    摘要:但能拷贝图粘贴后不失真通常是收费富文本编辑器才具备的能力。是否支持编程语言高亮,例如按,语言高亮是否支持数学公式等等因此选择了两款富文本编辑器,支持截屏粘贴,当做跟踪系统时这个功能特别有用。 一、Web应用技术栈 在开发Web应用时,通常会使用到以下技术栈: showImg(https://segmentfault.com/img/bVbwceG);对应这些技术栈都已有相应的开源产品...

    longmon 评论0 收藏0
  • Web应用全栈之旅-Spring(一)分布式Session

    摘要:一分布式的实现在微服务架构下,需要支持分布式,分布式可以通过来实现,也可以通过数据库来实现,本文介绍实现。二安装下载地址选择对应的版本安装。进入安装目录启动。站点微信公众号加入知识星球,参与讨论,更多实战代码分享 一、分布式Session的Redis实现 在微服务架构下,需要支持分布式Session,分布式Session可以通过Redis来实现,也可以通过数据库来实现,本文介绍Redi...

    yy13818512006 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<