之前写项目的时候,一直不知道怎么进行异常处理,一般都是在Controller层进行try、catch,然后在try括号内返回正确的数据,在catch中返回错误的数据。后来发现,spring中有一个很有用的注解@ControllerAdvice,能帮助我们进行统一异常管理
@ControllerAdvice,字面上来说就是控制器增强,可在其内部使用@ExceptionHandler来捕获异常,具体操作如下
1.我们先定义一个返回结果的枚举类ResultEnum,里面定义了一些返回结果类型,如参数不正确等
2.定义一个SellException类,主要用来统一处理项目中的异常,code为ResultEnum里的错误码,message为ResultEnum里的message
3.定义一个异常捕获类ExceptionHandle,加上@Controller注解,并使用@ExceptionHandle指定要捕获的异常类
判断捕获到的异常是否为自定义的SellException,如果是,则在result中返回指定的错误信息和错误信息码;如果不是,则返回-1,表示系统异常
4.在Controller类中直接抛出异常
5.不输入用户的openid,可以看到控制台打印出了openid为空的异常,并且返回结果中也返回了