断言介绍
断言(Assert)是对是一种在程序中的一阶逻辑(如:一个结果为真或假的逻辑判断式),目的为了表示与验证软件开发者预期的结果。
在日常开发中使用Spring框架提供的断言工具类较为多,Spring框架的断言工具在抛出异常时并非抛出Spring自定义的异常,而是JDK周中IllegalArgumentException非法参数检测异常。IllegalArgumentException其实在日常开发中是较为常用的,因此在很多引入的第三方框架中都会使用到此异常,基于此背景用Spring框架提供的断言工具和全局异常捕获来做项目的断言返回不是很合适。断言的目的是截断并且抛出有效信息。Spring框架提供的断言工具类在截断是没问题的,但要想很好的配合全局异常处理(RestControllerAdvice)抛出的有效信息从项目的总体设计来讲是不合适的,故优雅的设计一个全局高效适合项目的断言工具非常重要。
为什么要自定义断言
- 断言的思想在JDK设计中有一直被贯彻,且被合理的运用,实际证明这种思想是可行的
- Spring提供的断言类具有局限性且不便于扩展
- 项目中断言是经常需要使用到的,因此有一个断言工具类会使开发者在开发过程中非常方便
如何设计一个合理的断言
- 创建断言类
- 自定义断言相关的异常类
- 配置统一异常捕获,并配置断言相关的异常捕获
设计过程中需要注意的地方
- 自定义异常尽量实现一些常用的异常类型,比如RuntimeException,改异常会触发spring的默认事物会滚
- 全局异常处理(RestControllerAdvice)处理可能会涉及到配置在不同的Spring的Bean对象中,多个Bean配置涉及到Bean的加载顺序,因此需要特别注意Bean的加载顺序,不合理的设计和配置可能导致部分异常无法捕获。笔者认为,有条件的情况下应该将所有的异常捕获放到一个类中。