引入依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
<scope>provided</scope>
</dependency>
异常信息实体类ErrorResponse.java
主要用于包装异常信息
@Data
@Getter
@Setter
public class ErrorResponse {
private String message;
private String errorTypeName;
public ErrorResponse(Exception e) {
this(e.getClass().getName(), e.getMessage());
}
public ErrorResponse(String errorTypeName, String message) {
this.errorTypeName = errorTypeName;
this.message = message;
}
}
全局异常处理GlobalExceptionHandler.java
@ControllerAdvice
public class GlobalExceptionHandler {
private Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);
ErrorResponse illegalArgumentException = new ErrorResponse(new IllegalArgumentException("请求参数错误,请稍后重试!"));
ErrorResponse NullPointerException = new ErrorResponse(new NullPointerException("请求发生了空指针异常,请稍后再试"));
/**
*
* 拦截非法参数异常
* @param request
* @return
* @throws Exception
*/
@ExceptionHandler(value = IllegalArgumentException.class)
public ModelAndView illegalArgumentExceptionHandler(HttpServletRequest request) throws Exception {
log.error("Requst URL : {},Exception : {}", request.getRequestURL(),illegalArgumentException.getMessage());
ModelAndView mv = new ModelAndView();
mv.addObject("msg",illegalArgumentException.getMessage());
mv.addObject("type", illegalArgumentException.getErrorTypeName());
mv.setViewName("error");
return mv;
}
/**
* 拦截空指针异常
* @param request
* @return
*/
@ExceptionHandler(value = NullPointerException.class)
public ModelAndView nullPointerExceptionHandler(HttpServletRequest request) {
log.error("Requst URL : {},Exception : {}", request.getRequestURL(),NullPointerException.getMessage());
ModelAndView mv = new ModelAndView();
mv.addObject("msg",NullPointerException.getMessage());
mv.addObject("type", NullPointerException.getErrorTypeName());
mv.setViewName("error");
return mv;
}
}
Controller
@RestController
@RequestMapping("/api")
public class ExceptionController {
@GetMapping("/illegalArgumentException")
public void throwException() {
throw new IllegalArgumentException();
}
@GetMapping("/nullPointerException")
public void throwException2() {
throw new NullPointerException();
}
}