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相关推荐

  1. Checked exception及Unchecked exception对比

    一.异常分类 从异常处理机制的角度可以分为两类,Unchecked Exceptions和Checked Exceptions.Check即编译器检查程序是否已经抛出或处理了可能的异常.Uncheck ...

  2. java 判断exception类型_Checked Exception | Java语言设计者的失误?

    背景 最近公司一直在执行sonar扫描代码bug.漏洞及异味,但发现了很对异常处理的问题,大多数是对Java异常处理不正确导致的,那本文就谈谈Java的异常是什么?设计者的初衷又是什么? Except ...

  3. checked exception和unchecked exception区别

    http://blog.csdn.net/yuefengyuan/article/details/6204317 一. Java 中定义了两类异常: 1) Checked exception: 这类异 ...

  4. 记一次Jenkins 打包异常 ERROR: Exception when publishing, exception message [Failure]

    记一次Jenkins 打包异常 ERROR: Exception when publishing, exception message [Failure] 参考文章: (1)记一次Jenkins 打包 ...

  5. Jenkins发版常见问题:ERROR: Exception when publishing, exception message [Failure]

    Jenkins 报错日志: ERROR: Exception when publishing, exception message [Failure] Build step 'Send build a ...

  6. ERROR: Exception when publishing, exception message

    jenkins出现ERROR: Exception when publishing, exception message ERROR: Exception when publishing, excep ...

  7. 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 ...

  8. java Exception问题:unhandled exception:java.lang.Exception

    当在代码成抛出异常时,会出现这个问题,这是因为我们在代码抛出了异常而并没有处理,这需要上一层去捕获这个异常,因此我们要在函数加上throws. public void test() throws Ex ...

  9. Java异常:选择Checked Exception还是Unchecked Exception?

    Java包含两种异常:checked异常和unchecked异常.C#只有unchecked异常.checked和unchecked异常之间的区别是: Checked异常必须被显式地捕获或者传递,如B ...

  10. [转载] Java异常:选择Checked Exception还是Unchecked Exception?

    参考链接: Java中的已检查与未检查异常| checked或unchecked异常 Java包含两种异常:checked异常和unchecked异常.C#只有unchecked异常.checked和 ...

最新文章

  1. JavaWeb——jsp-config
  2. Android之linux基础教学之六 异常
  3. B. super_log(2019ICPC区域网络赛南京站)
  4. 如何做到长时间(4 个小时以上)精神专注?
  5. 图解C语言的希尔排序
  6. python 配置文件中密码不能是明文_配置文件中明文密码改为密文密码的方法
  7. React as a UI Runtime(五、列表)
  8. 重学AS3之基础知识重点记忆
  9. 62. KVOController详解
  10. pip安装包下载与安装
  11. 社会学概论试题库【1】
  12. 裁员、转型、突围,两图带你看懂交易所困局
  13. ROS--Kinetic--执行roslaunch时遇到的问题和解决办法
  14. oracle数据误删怎么恢复,Oracle数据误删了怎么恢复
  15. markdown 入门 - 这样就够用了
  16. 为华生物NHS-PEG-MAL 马来酰亚胺聚乙二醇活性酯的简介及应用说明
  17. 中国式父母计算机科学家攻略,中国式家长攻略大全:全结局解锁技巧汇总[多图]...
  18. 运行时数据区中包含哪些区域?哪些线程共享?哪些线程独享?
  19. 力士乐触摸屏维修VCP20.2DUN-003-PB-NN-PW
  20. pypi 清华源镜像使用方法

热门文章

  1. 日常生活小常识100条
  2. 厚积而薄发-2015年终总结
  3. 电磁兼容测试分析软件软件,电磁兼容测试方案的主要应用
  4. Word页面视图下不显示内容但web视图下可以显示的问题
  5. 鸿蒙大陆9.1正式版礼包,鸿蒙大陆2.0正式版
  6. Android下图片清晰度识别
  7. Redis事务特性分析
  8. 公众号推送长图最佳尺寸_微信公众平台图片尺寸是多少
  9. Maven —— was cached in the local repository, resolution will not be reattempted until the update ...
  10. Android地图轨迹抽稀、动态绘制