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
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
相关文章推荐
- spring boot学习教程(4):全局异常处理代码demo
- Spring Boot中Web应用的统一异常处理
- Spring Boot & Spring MVC 异常处理的N种方法
- SpringBoot----全局异常处理
- SpringBoot学习之全局异常处理设置(返回JSON)
- Spring Boot HTTP over JSON 的错误码异常处理
- springboot-20-全局异常处理
- spring boot之全局异常处理代码demo
- Spring boot 七 全局异常处理
- STS创建Spring Boot项目实战(Rest接口、数据库、用户认证、分布式Token JWT、Redis操作、日志和统一异常处理)
- spring boot 全局异常处理及自定义异常类
- SpringBoot学习之统一异常处理、404处理以及集成Swagger2
- 微服务,微架构[七]之springboot异常处理
- SpringCloud SpringBoot mybatis 分布式微服务(六)Spring Boot中Web应用的统一异常处理
- Spring Boot中使用AOP统一处理web层异常的方法
- SpringBoot系列五:SpringBoot错误处理(数据验证、处理错误页、全局异常)
- SpringBoot入门——局部与全局的异常处理
- SpringBoot初始教程之统一异常处理(三)
- SpringBoot学习——全局异常处理设置(返回JSON)
- 【SpringBoot】web进阶——表单验证,AOP统一处理请求日志,统一异常处理,单元测试