springboot 统一异常处理
2018-03-13 18:23
183 查看
public class GlobalErrException extends Exception{
private IErrorInfo iErrorInfo;
public GlobalErrException(IErrorInfo info) {
iErrorInfo = info;
}
public IErrorInfo getiErrorInfo() {
return iErrorInfo;
}
public void setiErrorInfo(IErrorInfo iErrorInfo) {
this.iErrorInfo = iErrorInfo;
}
}
package com.zte.daas.common.exception;
import com.zte.daas.common.exception.errorinfo.IErrorInfo;
import com.zte.daas.common.responseobj.ResultBody;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import javax.servlet.http.HttpServletRequest;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestControllerAdvice
public class GlobalErrExceptionHandle {
private static final Logger log = LoggerFactory.getLogger(GlobalErrExceptionHandle.class);
@ExceptionHandler(value = GlobalErrException.class)
public ResultBody busiErrorHandlerOverJson(HttpServletRequest request,
GlobalErrException exception) {
IErrorInfo errorInfo = exception.getiErrorInfo();
log.error("busiErrorHandlerOverJson:{}:{}",errorInfo.getCode(),errorInfo.getMgs());
ResultBody result = new ResultBody(errorInfo);
return result;
}
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public ResultBody validErrorHandlerOverJson(HttpServletRequest request,
MethodArgumentNotValidException exception) {
BindingResult result= exception.getBindingResult();
Map resultMap= new HashMap();
List<String> resultList = new ArrayList();
for (ObjectError objectError : result.getAllErrors())
{
resultMap= new HashMap();
// result.
String code = objectError.getCodes()[1];
resultList.add(code.substring(code.indexOf(".") + 1)+":"+objectError.getDefaultMessage());
}
ResultBody rsp = new ResultBody("8888",String.join("\n",resultList));
return rsp;
}
@ExceptionHandler(value = Exception.class)
public ResultBody sysErrorHandlerOverJson(HttpServletRequest request,
Exception exception) {
log.error("Exception:",exception);
ResultBody result = new ResultBody("9999",exception.getMessage());
return result;
}
}
package com.zte.daas.common.exception.errorinfo;
public interface IErrorInfo {
public String getCode();
public String getMgs() ;
}
package com.zte.daas.webapp.exception;
import com.zte.daas.common.config.SpringContextUtil;
import com.zte.daas.common.exception.errorinfo.IErrorInfo;
import com.zte.daas.common.locale.LocaleMessageSourceBean;
public enum BussinessErrorInfo implements IErrorInfo {
REGIST_NOT_EXIST("200001","bussinesserror.rigistnotexist"),
;
private String code;
private String mgs;
BussinessErrorInfo(String code,String mgs){
this.code = code;
this.mgs = mgs;
}
@Override
public String getCode() {
return code;
}
@Override
public String getMgs() {
LocaleMessageSourceBean lmb=(LocaleMessageSourceBean) SpringContextUtil.getBean("localeResolver");
return lmb.getMessage(mgs);
}
}
private IErrorInfo iErrorInfo;
public GlobalErrException(IErrorInfo info) {
iErrorInfo = info;
}
public IErrorInfo getiErrorInfo() {
return iErrorInfo;
}
public void setiErrorInfo(IErrorInfo iErrorInfo) {
this.iErrorInfo = iErrorInfo;
}
}
package com.zte.daas.common.exception;
import com.zte.daas.common.exception.errorinfo.IErrorInfo;
import com.zte.daas.common.responseobj.ResultBody;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import javax.servlet.http.HttpServletRequest;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestControllerAdvice
public class GlobalErrExceptionHandle {
private static final Logger log = LoggerFactory.getLogger(GlobalErrExceptionHandle.class);
@ExceptionHandler(value = GlobalErrException.class)
public ResultBody busiErrorHandlerOverJson(HttpServletRequest request,
GlobalErrException exception) {
IErrorInfo errorInfo = exception.getiErrorInfo();
log.error("busiErrorHandlerOverJson:{}:{}",errorInfo.getCode(),errorInfo.getMgs());
ResultBody result = new ResultBody(errorInfo);
return result;
}
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public ResultBody validErrorHandlerOverJson(HttpServletRequest request,
MethodArgumentNotValidException exception) {
BindingResult result= exception.getBindingResult();
Map resultMap= new HashMap();
List<String> resultList = new ArrayList();
for (ObjectError objectError : result.getAllErrors())
{
resultMap= new HashMap();
// result.
String code = objectError.getCodes()[1];
resultList.add(code.substring(code.indexOf(".") + 1)+":"+objectError.getDefaultMessage());
}
ResultBody rsp = new ResultBody("8888",String.join("\n",resultList));
return rsp;
}
@ExceptionHandler(value = Exception.class)
public ResultBody sysErrorHandlerOverJson(HttpServletRequest request,
Exception exception) {
log.error("Exception:",exception);
ResultBody result = new ResultBody("9999",exception.getMessage());
return result;
}
}
package com.zte.daas.common.exception.errorinfo;
public interface IErrorInfo {
public String getCode();
public String getMgs() ;
}
package com.zte.daas.webapp.exception;
import com.zte.daas.common.config.SpringContextUtil;
import com.zte.daas.common.exception.errorinfo.IErrorInfo;
import com.zte.daas.common.locale.LocaleMessageSourceBean;
public enum BussinessErrorInfo implements IErrorInfo {
REGIST_NOT_EXIST("200001","bussinesserror.rigistnotexist"),
;
private String code;
private String mgs;
BussinessErrorInfo(String code,String mgs){
this.code = code;
this.mgs = mgs;
}
@Override
public String getCode() {
return code;
}
@Override
public String getMgs() {
LocaleMessageSourceBean lmb=(LocaleMessageSourceBean) SpringContextUtil.getBean("localeResolver");
return lmb.getMessage(mgs);
}
}
相关文章推荐
- Spring Boot学习进阶笔记(五)-异常统一处理
- 企业分布式微服务云SpringCloud SpringBoot mybatis (五)Spring Boot中Web应用的统一异常处理
- spring-boot统一处理返回给前台的数据格式(避免返回异常堆栈信息,干扰用户体验)
- springboot + shiro 权限注解、统一异常处理、请求乱码解决
- spring-boot实战【07】【转】:Spring Boot中Web应用的统一异常处理
- SpringBoot 统一异常处理--- @ControllerAdvice 使用
- SpringSecurity中密码加盐与SpringBoot中异常统一处理
- Spring-Boot 统一异常处理
- SpringBoot初始教程之统一异常处理(三)
- spring boot / cloud (二) 规范响应格式以及统一异常处理
- Spring Boot中Web应用的统一异常处理
- Spring Cloud Spring Boot mybatis分布式微服务云架构(十一)Web应用的统一异常处理
- Springboot(统一异常处理)
- Spring Boot中Web应用的统一异常处理
- Spring Boot中Web应用的统一异常处理
- 【异常处理】Springboot对Controller层方法进行统一异常处理
- SpringBoot学习之统一异常处理、404处理以及集成Swagger2
- 【SpringBoot】Http请求统一异常(返回数据)处理与单元测试
- Spring Boot中Web应用的统一异常处理
- spring boot之统一错误异常处理