SpringBoot全局异常处理机制

什么是全局异常处理

当我看到同事的代码,controller层,service层,一箩筐try-catch,让我对同事的代码瞬间没了"可读欲",大量的try-catch代码不只是观赏性的陨落,还是我们的程序产生了大量的冗余代码,这个时候,"全局异常处理"就诞生了。

全局性异常处理

全局性异常处理,是项目中所有的异常,全部都会跑到该全局异常类中去处理,并统一返回。
首先,要处理全局异常,自定义的异常是必不可少的,因为,我们需要自定义异常去处理我们的业务。

自定义异常.jpeg
此时我们的自定义异常继承了最大的程序异常-->Exception,当我们处理业务逻辑时,可以填写具体的描述信息,给前端返回。下面时接收自定义异常的全局异常处理类。
全局异常处理类.jpeg
@RestController注解本身使用@ControllerAdvicer和@ResponseBody注解。
使用了@RestControllerAdvice注解的类会被看作一个ControllerAdvicer,
而该类中所有使用@ExceptionHandler注解的方法都默认使用了的@ResponseBody注解。

以下是RestControllerAdvice注解的源代码
image.png
也就是说,该注解下有@ControllerAdvice注解和@ResponseBody注解,属于组合注解,也就是说,该注解下的类,是全局异常处理类,返回的参数是以Json的形式返回的。

注解@ExceptionHandler:标明我们该方法拦截的异常类型,如果拦截Exception异常,则为@ExceptionHandler(Exception.class)

模块异常处理

当我们的项目组中,并不是所有人都想用这个全局异常处理,来拦截我们项目中所有的异常的时候,那我们可以用接口的形式,谁用,则谁的控制层去继承。
codeimg-facebook-highlighted-image.jpeg
这样只要你模块的控制层类去实现这个接口,就可以处理你模块的异常啦。

注解异常处理

略。。。

你可能感兴趣的:(SpringBoot全局异常处理机制)