zhangfeng
2022-11-08 f241a39f07acc5d5ede28b4152d74cbb84e4885b
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package com.gkhy.safePlatform.config.exception;
 
 
import com.gkhy.safePlatform.commons.enums.ResultCodes;
import com.gkhy.safePlatform.commons.exception.AusinessException;
import com.gkhy.safePlatform.commons.exception.BusinessException;
import com.gkhy.safePlatform.commons.vo.ResultVO;
import com.gkhy.safePlatform.emergency.excepiton.EmergencyException;
import com.gkhy.safePlatform.equipment.excepiton.EquipmentException;
import com.gkhy.safePlatform.incidentManage.exception.AccidentException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.core.AuthenticationException;
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
 
@ControllerAdvice
public class GlobalExceptionHandler {
 
    private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
 
    /**
     * 事故管理自定义异常
     */
    @ResponseBody
    @ExceptionHandler(value = AccidentException.class)
    public ResultVO AHandler(AccidentException e) {
        logger.warn(e.getMessage());
        return new ResultVO(e.getCode(),e.getMessage());
    }
 
    /**
     * 应急预案自定义异常
     */
    @ResponseBody
    @ExceptionHandler(value = EmergencyException.class)
    public ResultVO AHandler(EmergencyException e) {
        logger.warn(e.getMessage());
        return new ResultVO(e.getCode(),e.getMessage());
    }
    /**
     * 设备自定义异常
     */
    @ResponseBody
    @ExceptionHandler(value = EquipmentException.class)
    public ResultVO AHandler(EquipmentException e) {
        logger.warn(e.getMessage());
        return new ResultVO(e.getCode(),e.getMessage());
    }
 
    /**
     * 自定义异常
     */
    @ResponseBody
    @ExceptionHandler(value = AusinessException.class)
    public ResultVO AHandler(AusinessException e) {
        logger.warn(e.getMessage());
        return new ResultVO(e.getCode(),e.getMessage());
    }
 
 
    /**
     * 通用异常
     */
    @ResponseBody
    @ExceptionHandler(value = BusinessException.class)
    public ResultVO AHandler(BusinessException e) {
        logger.warn(e.getMessage());
        return new ResultVO(e.getCode(),e.getMessage());
    }
 
 
    /**
     * @Description: AuthenticationException
     */
 
    @ResponseBody
    @ExceptionHandler(value = AuthenticationException.class)
    public ResultVO CHandler(AuthenticationException e) {
        logger.warn(e.getMessage());
        return new ResultVO(ResultCodes.CLIENT_PERMISSION_NOT_ALLOW);
    }
 
 
    /**
     * @Description: AuthenticationException
     */
 
    @ResponseBody
    @ExceptionHandler(value = AccessDeniedException.class)
    public ResultVO DHandler(AccessDeniedException e) {
        logger.warn(e.getMessage());
        return new ResultVO(ResultCodes.CLIENT_PERMISSION_NOT_ALLOW);
 
    }
 
 
    /**
     * @Description: 请求方法
     */
    @ResponseBody
    @ExceptionHandler(value = HttpRequestMethodNotSupportedException.class)
    public ResultVO DHandler(HttpRequestMethodNotSupportedException e) {
        ResultVO resultVO = new ResultVO();
        resultVO.setCode(ResultCodes.CLIENT_METHOD_NOT_MATCH.getCode());
        resultVO.setMsg(e.getMessage());
        return resultVO;
 
    }
 
    /**
     * 系统错误异常
     */
    @ResponseBody
    @ExceptionHandler(value = Exception.class)
    public ResultVO errorHandler(Exception e) {
        e.printStackTrace();
        logger.error(e.getMessage());
        ResultVO resultVO = new ResultVO<>();
        resultVO.setCode(ResultCodes.SERVER_ERROR.getCode());
        return resultVO;
//        return new ResultVO(ResultCodes.SERVER_ERROR);
    }
    /**
     * 处理入参异常
     * @param e
     * @return
     */
    @ResponseBody
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResultVO handleMethodArgumentNotValidException(MethodArgumentNotValidException e){
        logger.warn(e.getBindingResult().getFieldError().getDefaultMessage());
        return new ResultVO(ResultCodes.SERVER_PARAM_NULL.getCode(),e.getBindingResult().getFieldError().getDefaultMessage());
    }
}