1.使用@RestControllerAdvice注解来进行异常的统一处理
@RestControllerAdvice
public class MyExceptionHandler {
@ExceptionHandler(value = Exception.class)
@ResponseBody
public String ErrorHandler(Exception e) {
if(e instanceof org.apache.shiro.authz.UnauthorizedException){
return "没有通过权限验证!暂无该权限";
}
if(e instanceof org.apache.shiro.authz.UnauthenticatedException){
return "没有通过权限验证!请先登录";
}
return "";
}
}
2.特殊异常 处理
对于401 404 403 这些异常,默认是由 BasicErrorController来处理的
默认处理结果如
不够友好
通过下面的方法解决
@Controller
public class NotFoundException implements ErrorController{
@Override
public String getErrorPath() {
return "/error";
}
@RequestMapping(value = {"/error"})
@ResponseBody
public Object error(HttpServletRequest request) {
//获取异常返回
//获取statusCode:401,404,500
Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
if(statusCode == 401){
return "401";
}else if(statusCode == 404){
return "404";
}else if(statusCode == 403){
return "403";
}else{
return "500";
}
}
}