您的位置:首页 > 编程语言 > Java开发

spring boot 异常处理

2018-03-06 09:35 323 查看
定义全局异常类有一定的局限性,无发处理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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: