whycxzp
2023-07-05 c7bc2cdbb75292d9d4d12cf02884f8f140f22009
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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();
        //单项提取-登录超时
        if(exceptionStr.contains("login") && exceptionStr.contains("imeout")){
            CommonUtil.record(ActionUtil.getUser().getId(),ActionUtil.getUser().getName(), UserOperation.TYPE_LOGIN_TIMEOUT.getType(),"登录请求超时","异常信息:"+ exceptionStr);
        }else {
            CommonUtil.record(ActionUtil.getUser().getId(),ActionUtil.getUser().getName(), UserOperation.TYPE_EXCEPTION.getType(), "接口调用异常:调用接口"+requestURI+"发生错误:"+exceptionStr);
        }
        return new Response().setII(0,"接口请求异常,请联系软件人员进行处理.异常信息"+ exceptionStr);
    }
 
 
}