Comment on page
异常介绍
异常就是有异于常态,和正常情况不一样,有错误出现。在java中,阻止当前方法或作用域的情况,称之为异常。

异常分类图
在系统开发中,平时经常需要使用的两种异常,一种是需要检查(checked)的,一种是不需要检查(unchecked)的。 那为什么需要两种异常呢?
- 用来区分告警的优先级。系统异常优先级高,因为说明系统服务、代码存在问题。
- 业务异常,是已知的,因为其他客观因素导致的,比如用户输入的身份证格式有问题、用户购买商品时金额不足等。
- 系统异常,是未知的,不知道啥时候会发生,如果发生了说明系统本身或者系统上下游存在问题,需要立马告警出来,让相关开发者感知到;以便发现问题和后续优化问题。比如:系统上下游服务抖动、请求超时、请求参数存在问题等。
- 使代码更清洁,该处理(checked)的异常内部处理掉,无法处理(unchecked)的异常告警出来。
往往对于开发者来说,比较难区分,何为系统系统,何为业务异常。其中系统异常是unchecked的,业务异常是checked。
RuntimeException
是在Java虚拟机的正常操作期间可以抛出的那些异常的超类,是Exception的子类,是Exception中unchecked子类的超类。 比如系统上下游抖动、请求超时等,是允许在系统运行期间抛出的,所以该类异常应该继承自RuntimeException