mirror of https://github.com/alibaba/easyexcel
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
4.0 KiB
95 lines
4.0 KiB
package com.alibaba.easytools.spring.exception; |
|
|
|
import javax.servlet.http.HttpServletRequest; |
|
import javax.validation.ConstraintViolationException; |
|
|
|
import com.alibaba.easytools.base.excption.BusinessException; |
|
import com.alibaba.easytools.base.excption.SystemException; |
|
import com.alibaba.easytools.base.wrapper.result.ActionResult; |
|
import com.alibaba.easytools.spring.exception.convertor.ExceptionConvertorUtils; |
|
import com.alibaba.fastjson.JSON; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
import org.apache.catalina.connector.ClientAbortException; |
|
import org.springframework.http.HttpStatus; |
|
import org.springframework.http.converter.HttpMessageNotReadableException; |
|
import org.springframework.validation.BindException; |
|
import org.springframework.web.HttpMediaTypeNotAcceptableException; |
|
import org.springframework.web.HttpMediaTypeNotSupportedException; |
|
import org.springframework.web.HttpRequestMethodNotSupportedException; |
|
import org.springframework.web.bind.MethodArgumentNotValidException; |
|
import org.springframework.web.bind.MissingRequestHeaderException; |
|
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.bind.annotation.ResponseStatus; |
|
import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; |
|
import org.springframework.web.multipart.MaxUploadSizeExceededException; |
|
import org.springframework.web.multipart.MultipartException; |
|
|
|
/** |
|
* 拦截Controller异常 |
|
* |
|
* @author 是仪 |
|
*/ |
|
@ControllerAdvice |
|
@Slf4j |
|
public class EasyControllerExceptionHandler { |
|
|
|
/** |
|
* 业务异常 |
|
* |
|
* @param request request |
|
* @param exception exception |
|
* @return return |
|
*/ |
|
@ExceptionHandler({MethodArgumentNotValidException.class, BindException.class, IllegalArgumentException.class, |
|
MissingServletRequestParameterException.class, MethodArgumentTypeMismatchException.class, |
|
BusinessException.class, MaxUploadSizeExceededException.class, ClientAbortException.class, |
|
HttpRequestMethodNotSupportedException.class, HttpMediaTypeNotAcceptableException.class, |
|
MultipartException.class, MissingRequestHeaderException.class, HttpMediaTypeNotSupportedException.class, |
|
ConstraintViolationException.class, HttpMessageNotReadableException.class}) |
|
@ResponseStatus(value = HttpStatus.OK) |
|
@ResponseBody |
|
public ActionResult handleBusinessException(HttpServletRequest request, Exception exception) { |
|
ActionResult result = ExceptionConvertorUtils.convert(exception); |
|
log.info("发生业务异常{}:{}", request.getRequestURI(), result, exception); |
|
return result; |
|
} |
|
|
|
/** |
|
* 系统异常 |
|
* |
|
* @param request request |
|
* @param exception exception |
|
* @return return |
|
*/ |
|
@ExceptionHandler({SystemException.class}) |
|
@ResponseStatus(value = HttpStatus.OK) |
|
@ResponseBody |
|
public ActionResult handleSystemException(HttpServletRequest request, Exception exception) { |
|
ActionResult result = ExceptionConvertorUtils.convert(exception); |
|
log.error("发生业务异常{}:{}", request.getRequestURI(), result, exception); |
|
return result; |
|
} |
|
|
|
/** |
|
* 未知异常 需要人工介入查看日志 |
|
* |
|
* @param request request |
|
* @param exception exception |
|
* @return return |
|
*/ |
|
@ExceptionHandler(Exception.class) |
|
@ResponseStatus(value = HttpStatus.OK) |
|
@ResponseBody |
|
public ActionResult handledException(HttpServletRequest request, Exception exception) { |
|
ActionResult result = ExceptionConvertorUtils.convert(exception); |
|
log.error("发生未知异常{}:{}:{},请求参数:{}", request.getRequestURI(), |
|
ExceptionConvertorUtils.buildHeaderString(request), result, |
|
JSON.toJSONString(request.getParameterMap()), exception); |
|
return result; |
|
} |
|
|
|
}
|
|
|