前言
在日常项目开发中,异常是常见的,但是如何更高效的处理好异常信息,让我们能快速定位到BUG,是很重要的,不仅能够提高我们的开发效率,还能让你代码看上去更舒服,SpringBoot的项目已经对有一定的异常处理了,但是对于我们开发者而言可能就不太合适了,因此我们需要对这些异常进行统一的捕获并处理。
一、全局异常处理方式一
SpringBoot中,@ControllerAdvice 即可开启全局异常处理,使用该注解表示开启了全局异常的捕获,我们只需在自定义一个方法使用@ExceptionHandler注解然后定义捕获异常的类型即可对这些捕获的异常进行统一的处理。
1.1 自定义全局异常类
1 | java复制代码/** |
1.2 手动抛出异常
1 | java复制代码 @GetMapping("/getById/{userId}") |
1.3 测试打印
很显然这样的用户体验效果是极差的,虽然这种能够让我们知道异常的原因,但是在很多的情况下来说,可能还是不够人性化,不符合我们的要求。
二、全局异常处理方式二
2.1 定义基础接口类
1 | java复制代码/** |
2.2 定义枚举类
1 | java复制代码/** |
2.3 自定义异常类
1 | java复制代码/** |
2.4 自定义数据传输
1 | java复制代码/** |
2.5 自定义全局异常处理
1 | java复制代码/** |
2.6 测试代码
1 | java复制代码@PostMapping("/add") |
1 | java复制代码 @PutMapping("/update") |
1 | java复制代码 @DeleteMapping("/delete") |
如果我们想捕获这个类型转换异常,是不是再添加一个遗产处理方法就可了。
1 | java复制代码/** |
1 | java复制代码PARAMS_NOT_CONVERT("4002","类型转换不对!"), |
自定义全局异常处理除了可以处理上述的数据格式之外,也可以处理页面的跳转,只需在新增的异常方法的返回处理上填写该跳转的路径并不使用ResponseBody 注解即可。
总结
异常处理,能够减少代码的重复度和复杂度,有利于代码的维护,并且能够快速定位到BUG,大大提高我们的开发效率。
本文转载自: 掘金