1.创建一个全局异常处理类
2.添加注解RestControllerAdvice 这个是直接返回一个json格式的
3.在处理方法上添加ExceptionHandler表明是对那个异常进行处理的
4.在处理方法中编写业务逻辑
注意: 这里的R是一个返回给前台的数据的类;BizCodeEnum是一个业务编码的状态码,第一个处理异常的方法是对JRS303校验的异常处理
package com.yuchen.yuchenmail.mailproduct.exception;
import com.yuchen.common.exception.BizCodeEnum;
import com.yuchen.common.utils.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@RestControllerAdvice(basePackages ="com.yuchen.yuchenmail.mailproduct.controller")
public class GlobalExceptionControllerAdvice {
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public R handleVaildException(MethodArgumentNotValidException e){
log.info(e.toString());
BindingResult bindingResult = e.getBindingResult();
Map errorMap =new HashMap<>();
bindingResult.getFieldErrors().forEach((fieldError) -> {
errorMap.put(fieldError.getField(), fieldError.getDefaultMessage());
});
return R.error(BizCodeEnum.VAILD_EXCEPTION.getCode(),BizCodeEnum.VAILD_EXCEPTION.getMsg()).put("data",errorMap);
}
@ExceptionHandler(value = Throwable.class)
public R defaultHandleException(Throwable t){
return R.error(BizCodeEnum.UNKNOW_EXCEPTION.getCode(),BizCodeEnum.UNKNOW_EXCEPTION.getMsg());
}
}
网友评论