전역 예외 처리 코드
6245 단어 JavaEE
package com.whfc.ms.exception;
import com.whfc.common.exception.BizException;
import com.whfc.common.result.Result;
import com.whfc.common.result.ResultEnum;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authz.AuthorizationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.MissingServletRequestParameterException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
import java.util.ArrayList;
import java.util.List;
/**
* @author sunguodong
* @desc
* @date 2019-07-20
*/
@ControllerAdvice("com.whfc")
public class GlobalExceptionHandler {
private Logger logger = LoggerFactory.getLogger(getClass());
@ExceptionHandler(value = {Exception.class})
@ResponseBody
public Result exceptionHandler(Exception ex) {
logger.error("not_handled_exception", ex);
Result message = new Result();
message.setCode(ResultEnum.FAILURE.getCode());
message.setMsg(ex.getMessage());
return message;
}
@ExceptionHandler(value = {BizException.class})
@ResponseBody
public Result bizExceptionHandler(BizException ex) {
logger.warn(ex.getMsg());
Result message = new Result();
message.setCode(ex.getCode());
message.setMsg(ex.getMsg());
return message;
}
@ExceptionHandler(value = {MethodArgumentNotValidException.class})
@ResponseBody
public Result methodArgumentValidExceptionHandler(MethodArgumentNotValidException ex) {
logger.warn(ex.getMessage());
BindingResult result = ex.getBindingResult();
List fieldErrors = new ArrayList<>();
if (result.hasErrors()) {
List errorList = result.getAllErrors();
for (ObjectError error : errorList) {
FieldError fieldError = (FieldError) error;
fieldErrors.add(String.format("%s:%s", fieldError.getField(), fieldError.getDefaultMessage()));
}
}
Result message = new Result();
message.setCode(ResultEnum.PARAM_ERROR.getCode());
message.setMsg(ResultEnum.PARAM_ERROR.getMessage());
message.setData(fieldErrors);
return message;
}
@ExceptionHandler(value = {MissingServletRequestParameterException.class})
@ResponseBody
public Result missingServletRequestParameterExceptionHandler(MissingServletRequestParameterException ex) {
logger.warn(ex.getMessage(), ex);
Result message = new Result();
message.setCode(ResultEnum.PARAM_ERROR.getCode());
message.setMsg(String.format(" :%s, :%s", ex.getParameterName(), ex.getParameterType()));
message.setData(null);
return message;
}
@ExceptionHandler(value = {MethodArgumentTypeMismatchException.class})
@ResponseBody
public Result methodArgumentTypeMismatchException(MethodArgumentTypeMismatchException ex) {
logger.warn(ex.getMessage(), ex);
Result message = new Result();
message.setCode(ResultEnum.PARAM_ERROR.getCode());
message.setMsg(String.format(" %s ", ex.getName()));
message.setData(null);
return message;
}
@ExceptionHandler(value = {HttpMessageNotReadableException.class})
@ResponseBody
public Result httpMessageNotReadableException(HttpMessageNotReadableException ex) {
logger.warn(ex.getMessage(), ex);
Result message = new Result();
message.setCode(ResultEnum.PARAM_ERROR.getCode());
message.setMsg(" ");
message.setData(null);
return message;
}
@ExceptionHandler(value = {AuthenticationException.class})
@ResponseBody
public Result authenticationException(AuthenticationException ex) {
logger.warn(ex.getMessage(), ex);
Result message = new Result();
message.setCode(ResultEnum.FAILURE.getCode());
message.setData(null);
message.setMsg(" ");
return message;
}
@ExceptionHandler(value = {AuthorizationException.class})
@ResponseBody
public Result authorizationException(AuthorizationException ex) {
logger.warn(ex.getMessage(), ex);
Result message = new Result();
message.setCode(ResultEnum.AUTHZ_ERROR.getCode());
message.setData(null);
message.setMsg(ResultEnum.AUTHZ_ERROR.getMessage());
return message;
}
@ExceptionHandler(value = {IncorrectCredentialsException.class})
@ResponseBody
public Result incorrectCredentialsException(IncorrectCredentialsException ex) {
logger.warn(ex.getMessage(), ex);
Result message = new Result();
message.setCode(ResultEnum.FAILURE.getCode());
message.setData(null);
message.setMsg(" ");
return message;
}
}
비정상 클래스 사용자 정의 BizException
package com.whfc.common.exception;
/**
* @Description:
* @author: sunguodong
* @version: 1.0
* @date: 2019/7/22 14:43
*/
public class BizException extends RuntimeException {
private String code;
private String msg;
public BizException() {
}
public BizException(String code, String msg) {
this.code = code;
this.msg = msg;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【intra-mart】Java 클래스 파일 등이 Import 할 수 없게되었을 때의 대처법오늘은, intra-mart로 Java의 클래스 파일등이 Import 할 수 없게 되었을 때의 대처법을 기재합니다. JavaEE 개발을 할 때 자신도 같은 상황이 되었습니다. 비망을 위해 기사로하고 있습니다. 【전제...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.