package com.common;
import java.util.List;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import javax.validation.ValidationException;
import org.springframework.validation.BindException;
import org.springframework.validation.ObjectError;
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 com.oberyun.obrcomm.response.Result;
import lombok.extern.slf4j.Slf4j;
/**
* @author sunpeng
*/
@Slf4j
@ControllerAdvice
public class GlobalExceptionHandler {
/**
* 参数绑定错误
* @param request /
* @param e /
* @return /
*/
@ResponseBody
@ExceptionHandler(BindException.class)
public Result<Void> handleBindException(final BindException e, final HttpServletRequest request) {
log.warn("参数绑定错误 请求地址:{} msg:{}", request.getRequestURI(), e.getMessage());
List<ObjectError> allErrors = e.getBindingResult().getAllErrors();
String message = allErrors.stream().map(s -> s.getDefaultMessage()).collect(Collectors.joining(";"));
return Result.error(400, message);
}
/**
* 参数校验错误
* @param request /
* @param e /
* @return /
*/
@ResponseBody
@ExceptionHandler(ValidationException.class)
public Result<Void> handleValidationException(final ValidationException e, final HttpServletRequest request) {
log.warn("参数校验错误 请求地址:{} msg:{}", request.getRequestURI(), e.getMessage());
return Result.error(400, e.getMessage());
}
/**
* Controller参数绑定错误
* @param e /
* @param request /
* @return /
*/
@ResponseBody
@ExceptionHandler(MissingServletRequestParameterException.class)
public Result<Void> handleMissingServletRequestParameterException(final MissingServletRequestParameterException e,
final HttpServletRequest request) {
log.warn("参数绑定错误 请求地址:{} msg:{}", request.getRequestURI(), e.getMessage());
return Result.error(400, "请求参数不合法");
}
/**
* 未知异常
* @param request /
* @param e /
* @return /
*/
@ResponseBody
@ExceptionHandler(value = Exception.class)
public Result<Void> exceptionHandler(final HttpServletRequest request, final Exception e) {
log.error("未知异常 请求地址:{} ", request.getRequestURI(), e);
return Result.error(500, "服务端异常");
}
}
java异常捕获拦截器 ExceptionHandler
最新推荐文章于 2024-04-23 18:52:22 发布