package com.whyc.exception;
|
|
import com.whyc.constant.UserOperation;
|
import com.whyc.dto.Response;
|
import com.whyc.util.ActionUtil;
|
import com.whyc.util.CommonUtil;
|
import org.springframework.http.HttpStatus;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Service;
|
import org.springframework.web.bind.annotation.ExceptionHandler;
|
import org.springframework.web.bind.annotation.ResponseStatus;
|
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
|
/**
|
* 针对RestController层捕捉异常,结果统一返回
|
*/
|
@RestControllerAdvice(annotations = {RestController.class, Controller.class, Service.class})
|
public class CustomExceptionResultHandler {
|
|
/**错误捕捉,状态码:202*/
|
@ExceptionHandler(Exception.class)
|
@ResponseStatus(HttpStatus.ACCEPTED)
|
public Response sendErrorResponse2Defined(Exception e, HttpServletResponse response, HttpServletRequest request){
|
String exceptionStr = e.toString();
|
String requestURI = request.getRequestURI();
|
//根据当前的语言环境设置不同的日志记录
|
String lang = ActionUtil.getLang();
|
//单项提取-登录超时
|
if (exceptionStr.contains("login") && exceptionStr.contains("imeout")) {
|
if (lang.contains("zh")) {
|
CommonUtil.record(ActionUtil.getUser().getUId(), UserOperation.TYPE_LOGIN_TIMEOUT.getType(), "登录请求超时", "异常信息:" + exceptionStr);
|
} else {
|
CommonUtil.record(ActionUtil.getUser().getUId(), UserOperation.TYPE_LOGIN_TIMEOUT.getType(), UserOperation.TYPE_LOGIN_TIMEOUT.getTypeNameEn(), "exception message:" + exceptionStr);
|
}
|
} else {
|
if (lang.contains("zh")) {
|
CommonUtil.record(ActionUtil.getUser().getUId(), UserOperation.TYPE_EXCEPTION.getType(), "接口调用异常:调用接口" + requestURI + "发生错误:" + exceptionStr);
|
} else {
|
CommonUtil.record(ActionUtil.getUser().getUId(), UserOperation.TYPE_EXCEPTION.getType(), UserOperation.TYPE_EXCEPTION.getTypeNameEn() + "Call Interface:" + requestURI + "error occurred:" + exceptionStr);
|
}
|
}
|
return new Response().setII(0, "接口请求异常,请联系软件人员进行处理.异常信息" + exceptionStr);
|
}
|
|
|
}
|