Web 全局异常处理
当项目由多个控制层类中有多个共性异常的处理方法定义时,我们可以将这些方法提取
到公共的父类对象中,但是这种方式是一种强耦合的实现,不利于代码的维护。我们还可以
借助 spring 框架中 web 模块定义的全局异常处理规范进行实现,例如定义全局异常处理类,
代码如下
一:在controller包父包下创建advice包
包结构如上
创建异常处理类GlobalExceptionHandler
package com.cy.pj.sys.web.advice;
import com.cy.pj.sys.web.pojo.JsonResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
/**
* 此注解描述的类为全局异常处理类
*/
@RestControllerAdvice //@ControllerAdvice+@ResponseBody
@Sl4j
public class GlobalExceptionHandler {
/**@ExceptionHandler 注解描述的方法为异常处理方法,
* 注解中定义的异常类型为方法可以处理的异常类型.*/
@ExceptionHandler(RuntimeException.class)
public JsonResult doHandleRuntimeException(
RuntimeException e){
e.printStackTrace();
log.error("exception msg is {}",e.getMessage());
return new JsonResult(e);
}
//......
}