1、返回异常接收页面
一、引入依赖
org.springframework.boot spring-boot-starter-thymeleaforg.springframework.boot spring-boot-starter-web
二、添加配置
spring:
thymeleaf:
cache: false
suffix: .html
encoding: UTF-8
servlet:
content-type: text/html
三、templates下新建error.html
全局异常处理
四、 定义统一异常接收
@Slf4j
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value=Exception.class)//处理哪一类异常
public ModelAndView handlerException(Exception e, HttpServletRequest request){
ModelAndView modelAndView = new ModelAndView();
//跳转异常页面路径
modelAndView.setViewName("error");
//页面显示错误信息 页面只需要使用对应的取值方式取值就可以取到msg了
modelAndView.addObject("msg",e.getMessage());
modelAndView.addObject("url", request.getRequestURL());
return modelAndView;
}
}
2、返回json数据格式
一、统一异常处理
@Slf4j
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = BizException.class)
@ResponseBody
public Result> bizExceptionHandler(BizException ex){
if(log.isErrorEnabled()){
log.error("发生业务异常!原因是:{}",ex.getErrorMsg());
}
return Result.error(ex.getErrorCode(),ex.getErrorMsg());
}
@ExceptionHandler(value =NullPointerException.class)
@ResponseBody
public Result> exceptionHandler(NullPointerException ex){
if(log.isErrorEnabled()){
log.error("发生空指针异常!原因是:",ex);
}
return Result.error(ResultCodeEnum.BODY_NOT_MATCH);
}
@ExceptionHandler(value =Exception.class)
@ResponseBody
public Result> exceptionHandler(Exception ex){
if(log.isErrorEnabled()){
log.error("未知异常!原因是:",ex);
}
return Result.error(ResultCodeEnum.INTERNAL_SERVER_ERROR);
}
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseBody
public Result> methodArgumentNotValidExceptionHandler(MethodArgumentNotValidException ex) {
String message = ex.getBindingResult()
.getAllErrors()
.stream()
.map(DefaultMessageSourceResolvable::getDefaultMessage)
.collect(Collectors.joining());
return Result.fail(message);
}
@ExceptionHandler({ConstraintViolationException.class})
public Result> handleConstraintViolationException(ConstraintViolationException ex) {
String message = ex.getConstraintViolations()
.stream()
.map(ConstraintViolation::getMessage)
.collect(Collectors.joining());
return Result.fail(message);
}
@ExceptionHandler(BindException.class)
@ResponseBody
public Result> bindExceptionHandler(BindException ex) {
String message = ex.getBindingResult()
.getAllErrors()
.stream()
.map(DefaultMessageSourceResolvable::getDefaultMessage)
.collect(Collectors.joining());
return Result.fail(message);
}
}



