Check Exception or Uncheck Exception
Check Exception or Uncheck Exception
最近遇到Spring MVC的系统中有各种乱七八糟的异常,领导说重构下,统一的异常处理、支持国际化。
系统现状:
1. 系统中的异常一般有一个统一处理异常的AOP,但是没有严格的错误码,抛异常文案都是直接裸露在业务代码中
2. 系统抛的异常大多没有业务含义,NP也没有处理,大多都是直接的java代码级别的异常
明确问题后,大概要做以下的事情
1. 包含严格的错误码、清晰的文案(国际化问题只有多一些语种的文案)
2. 定义好业务异常
第一个问题很好搞,第二个问题在搞的过程中面临一个选择, java中的异常包含两种: Check Exception or UnCheck Exception.
UnCheck Exception是运行时的异常,Check Exception 是明确的异常。到底我们的业务异常用哪一种异常呢?或者都用?
(1) 假设用Check Exception
这样的好处就是接口暴露出来异常的类型,调用者会很明确知道需要处理哪些异常
坏处就是: 代码丑丑丑丑丑丑、每个接口定义后面都跟了一堆的异常。
(2) 假设用 Uncheck Exception
这样的好处就是接口简洁、确定就是上层根本不知道接口会抛出什么异常、业务逻辑要怎么处理这些异常?完全懵逼
(3) 混合用
好处不说了 双方的优点,坏处就是系统复杂,很多时候 写代码的都不知道哪些要定义成check或者uncheck Exception
我的经验是如果是Spring mvc这种会有一个统一处理异常的出口的系统,多用Uncheck Exception,少用Check Exception。除非特别的情况,需要非常明确上层系统要处理的。
说说我们系统改造的结果,由于我们系统Restful风格的接口, 异常的类型抽象出以下几大类
public class BusiException extends RuntimeException
{
}
以下的异常都 extends BusiException
ForbiddenException
InternalServiceErrorException
InvalidParameterException
ResourceConflictException
ResourceNotFoundException
UnauthorizedException
基本上跟集中http code一致。
待续-----------------------
Check Exception or Uncheck Exception相关推荐
- Checked exception及Unchecked exception对比
一.异常分类 从异常处理机制的角度可以分为两类,Unchecked Exceptions和Checked Exceptions.Check即编译器检查程序是否已经抛出或处理了可能的异常.Uncheck ...
- java 判断exception类型_Checked Exception | Java语言设计者的失误?
背景 最近公司一直在执行sonar扫描代码bug.漏洞及异味,但发现了很对异常处理的问题,大多数是对Java异常处理不正确导致的,那本文就谈谈Java的异常是什么?设计者的初衷又是什么? Except ...
- checked exception和unchecked exception区别
http://blog.csdn.net/yuefengyuan/article/details/6204317 一. Java 中定义了两类异常: 1) Checked exception: 这类异 ...
- 记一次Jenkins 打包异常 ERROR: Exception when publishing, exception message [Failure]
记一次Jenkins 打包异常 ERROR: Exception when publishing, exception message [Failure] 参考文章: (1)记一次Jenkins 打包 ...
- Jenkins发版常见问题:ERROR: Exception when publishing, exception message [Failure]
Jenkins 报错日志: ERROR: Exception when publishing, exception message [Failure] Build step 'Send build a ...
- ERROR: Exception when publishing, exception message
jenkins出现ERROR: Exception when publishing, exception message ERROR: Exception when publishing, excep ...
- ERROR: Exception when publishing, exception message [Failed to connect and initialize SSH connection
JEKINS构建报以下错误:ERROR: Exception when publishing, exception message [Failed to connect and initialize ...
- java Exception问题:unhandled exception:java.lang.Exception
当在代码成抛出异常时,会出现这个问题,这是因为我们在代码抛出了异常而并没有处理,这需要上一层去捕获这个异常,因此我们要在函数加上throws. public void test() throws Ex ...
- Java异常:选择Checked Exception还是Unchecked Exception?
Java包含两种异常:checked异常和unchecked异常.C#只有unchecked异常.checked和unchecked异常之间的区别是: Checked异常必须被显式地捕获或者传递,如B ...
- [转载] Java异常:选择Checked Exception还是Unchecked Exception?
参考链接: Java中的已检查与未检查异常| checked或unchecked异常 Java包含两种异常:checked异常和unchecked异常.C#只有unchecked异常.checked和 ...
最新文章
- JavaWeb——jsp-config
- Android之linux基础教学之六 异常
- B. super_log(2019ICPC区域网络赛南京站)
- 如何做到长时间(4 个小时以上)精神专注?
- 图解C语言的希尔排序
- python 配置文件中密码不能是明文_配置文件中明文密码改为密文密码的方法
- React as a UI Runtime(五、列表)
- 重学AS3之基础知识重点记忆
- 62. KVOController详解
- pip安装包下载与安装
- 社会学概论试题库【1】
- 裁员、转型、突围,两图带你看懂交易所困局
- ROS--Kinetic--执行roslaunch时遇到的问题和解决办法
- oracle数据误删怎么恢复,Oracle数据误删了怎么恢复
- markdown 入门 - 这样就够用了
- 为华生物NHS-PEG-MAL 马来酰亚胺聚乙二醇活性酯的简介及应用说明
- 中国式父母计算机科学家攻略,中国式家长攻略大全:全结局解锁技巧汇总[多图]...
- 运行时数据区中包含哪些区域?哪些线程共享?哪些线程独享?
- 力士乐触摸屏维修VCP20.2DUN-003-PB-NN-PW
- pypi 清华源镜像使用方法
热门文章
- 日常生活小常识100条
- 厚积而薄发-2015年终总结
- 电磁兼容测试分析软件软件,电磁兼容测试方案的主要应用
- Word页面视图下不显示内容但web视图下可以显示的问题
- 鸿蒙大陆9.1正式版礼包,鸿蒙大陆2.0正式版
- Android下图片清晰度识别
- Redis事务特性分析
- 公众号推送长图最佳尺寸_微信公众平台图片尺寸是多少
- Maven —— was cached in the local repository, resolution will not be reattempted until the update ...
- Android地图轨迹抽稀、动态绘制