目录
1.主要作用
@RestControllerAdvice主要用精简客户端返回异常,它可以捕获各种异常
2.判断异常的类型
1.后端数据校验异常
2.未授权异常
3.自定义异常
4.普通异常
3.实现
未优化前
import com.qing.emos.wx.exception.EmosException;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.UnauthorizedException;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.*;
@Slf4j
//@RestControllerAdvice可以捕获SpringMVC异常
@RestControllerAdvice
public class ExceptionAdvice {
@ResponseBody
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
// ExceptionHandler用于全局捕获异常
@ExceptionHandler(Exception.class)
public String validExcepionHandler(Exception e){
log.error("执行异常",e);
// 后端验证失败的异常,参数没传,或者传的不对
if(e instanceof MethodArgumentNotValidException){
MethodArgumentNotValidException exception = (MethodArgumentNotValidException) e;
return exception.getBindingResult().getFieldError().getDefaultMessage();
}
// 精简异常的内容,EmosException为自己定义异常
else if(e instanceof EmosException){
EmosException exception = (EmosException) e;
return exception.getMsg();
}
// 未授权异常
else if(e instanceof UnauthorizedException){
return "你不具备相关权限";
}
// 普通异常
else {
return "后端执行异常";
}
}
}
优化后