spring boot 异常处理

定义全局异常类有一定的局限性,无发处理404、403等异常情况,可通过实现ErrorController接口实现404、403等异常情况处理,示例代码如下:

public class RestErrorHandleEndPoint implements ErrorController {
    //@Autowired
    //private ErrorAttributes errorAttributes;
    @Override
    public String getErrorPath() {
        return  "/error";
    }
    //***********注意:默认的ErrorMvcAutoConfiguration采用对的错误路径默认是/error,因此@RequestMapping映射的路径也应该是/error
    //@RequestMapping(value = "/errors")
    @RequestMapping(value =  "/error")
    @ResponseBody
    public ResponseEntity error(HttpServletRequest request, HttpServletResponse response) {
        //if(!EnvironmentUtils.isProduction()) {
            //return buildBody(request,true);
            return new ResponseEntity<Map<String,Object>>(buildBody(request,response,true),HttpStatus.NOT_FOUND);
        //}else{
        //    return buildBody(request,false);
       //}
    }

    private Map<String,Object>  buildBody(HttpServletRequest request,HttpServletResponse response,Boolean includeStackTrace){
        Map<String,Object> errorAttributes =new HashMap<String,Object>();
        Integer status=response.getStatus();
        errorAttributes.put("status",status);

        String path=request.getServletPath();
        errorAttributes.put("path",path);

        String messageFound="no path found";
        errorAttributes.put("message",messageFound);

  return errorAttributes;
        //return FailureResponseBody.builder().code(0).status(status).message(message).build();
    }
}
备注:ErrorController接口实现类中进行异常处理的路径需要设置为默认的/error,这是因为spring boot中的ErrorMvcAutoConfiguration 类将默认将错误处理路径设置为/error,不修改默认配置设置为其它的路径,不能触发全局异常处理。


更全面的网站异常处理可参见链接:http://neverflyaway.iteye.com/blog/2301571

猜你喜欢

转载自blog.csdn.net/u012846041/article/details/79260718
今日推荐