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);
}
}
统一异常处理后,事物 回滚的处理“
@Transactional(rollbackFor = Exception.class)”