123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- package com.dtb.portal.exception;
- import com.dtb.portal.controller.view.RestResponse;
- import com.dtb.portal.util.CodeDefault;
- import com.google.common.base.Strings;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.web.bind.ServletRequestBindingException;
- 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.RestControllerAdvice;
- import javax.servlet.http.HttpServletRequest;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.Map;
- /**
- * 全局异常处理
- */
- @RestControllerAdvice
- @ControllerAdvice
- @Slf4j
- public class GlobalExceptionHandler {
- /**
- * controller 参数转化时, 主要从这里捕获错误信息
- *
- * @param request 请求
- * @param e 错误信息
- * @return 请求结果
- */
- @ExceptionHandler(value = ServletRequestBindingException.class)
- @ResponseBody
- public RestResponse<?> exception(HttpServletRequest request, ServletRequestBindingException e) {
- RestResponse<?> exception = RestResponse.exception(CodeDefault.ILLEGAL_ARGUMENT);
- log.error("请求参数错误: {}", exception, e);
- return exception;
- }
- /**
- * NPE处理
- *
- * @param request 请求
- * @param npe 错误信息
- * @return 请求结果
- */
- @ExceptionHandler(value = NullPointerException.class)
- @ResponseBody
- public RestResponse<?> exception(HttpServletRequest request, NullPointerException npe) {
- /* RestResponse<?> exception = RestResponse.exception(CodeDefault.NULL_POINT_ERROR);
- if (!Strings.isNullOrEmpty(npe.getMessage())) {
- exception.setMessage(npe.getMessage());
- }
- Map<String, Object> extras = new HashMap<>(0);
- StackTraceElement stackTraceElement = npe.getStackTrace()[0];
- extras.put("class", stackTraceElement.getClassName());
- extras.put("method", stackTraceElement.getMethodName());
- extras.put("lineNumber", stackTraceElement.getLineNumber());
- exception.setExtraInfo(extras);
- log.error("NullPointerException: {}", exception, npe);*/
- String errMessage = npe.getMessage();
- if (StringUtils.isNotBlank(errMessage)) {
- errMessage = errMessage.split(":")[1].replaceAll(" ","");
- }
- return RestResponse.ok(errMessage);
- }
- /**
- * 这个兜底
- *
- * @param request 请求
- * @param e 错误信息
- * @return 请求结果
- */
- @ExceptionHandler(value = RuntimeException.class)
- @ResponseBody
- public RestResponse<?> exception(HttpServletRequest request, RuntimeException e) {
- String errMessage = e.getMessage();
- log.error("RuntimeException :",errMessage);
- /* if (StringUtils.isNotBlank(errMessage)) {
- errMessage = errMessage.split(":")[1].replaceAll(" ","");
- }*/
- if (errMessage.equals("会话超时,请重新登录")) {
- return RestResponse.timeOut(errMessage);
- }
- if (errMessage.equals("验证失败,请重新登录后使用")) {
- return RestResponse.timeOut(errMessage);
- }
- if (errMessage.equals("未登录")) {
- return RestResponse.noToken(errMessage);
- }
- return RestResponse.exception(errMessage);
- }
- @ExceptionHandler(value = Exception.class)
- @ResponseBody
- public RestResponse<?> exception(HttpServletRequest request, Exception e) {
- String errMessage = e.getMessage();
- /* if (StringUtils.isNotBlank(errMessage)) {
- errMessage = errMessage.split(":")[1].replaceAll(" ","");
- }*/
- log.error("==============>Exception :",e);
- return RestResponse.exception(errMessage);
- }
- }
|