| package com.genersoft.iot.vmp.conf; | 
|   | 
| import com.genersoft.iot.vmp.conf.exception.ControllerException; | 
| import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; | 
| import com.genersoft.iot.vmp.vmanager.bean.WVPResult; | 
| import org.slf4j.Logger; | 
| import org.slf4j.LoggerFactory; | 
| import org.springframework.http.HttpStatus; | 
| import org.springframework.http.ResponseEntity; | 
| import org.springframework.security.authentication.BadCredentialsException; | 
| import org.springframework.web.HttpRequestMethodNotSupportedException; | 
| import org.springframework.web.bind.annotation.ExceptionHandler; | 
| import org.springframework.web.bind.annotation.ResponseStatus; | 
| import org.springframework.web.bind.annotation.RestControllerAdvice; | 
|   | 
| /** | 
|  * 全局异常处理 | 
|  */ | 
| @RestControllerAdvice | 
| public class GlobalExceptionHandler { | 
|   | 
|     private final static Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class); | 
|   | 
|     /** | 
|      * 默认异常处理 | 
|      * @param e 异常 | 
|      * @return 统一返回结果 | 
|      */ | 
|     @ExceptionHandler(Exception.class) | 
|     @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) | 
|     public WVPResult<String> exceptionHandler(Exception e) { | 
|         logger.error("[全局异常]: ", e); | 
|         return WVPResult.fail(ErrorCode.ERROR500.getCode(), e.getMessage()); | 
|     } | 
|   | 
|     /** | 
|      * 默认异常处理 | 
|      * @param e 异常 | 
|      * @return 统一返回结果 | 
|      */ | 
|     @ExceptionHandler(IllegalStateException.class) | 
|     @ResponseStatus(HttpStatus.BAD_REQUEST) | 
|     public WVPResult<String> exceptionHandler(IllegalStateException e) { | 
|         return WVPResult.fail(ErrorCode.ERROR400); | 
|     } | 
|   | 
|     /** | 
|      * 默认异常处理 | 
|      * @param e 异常 | 
|      * @return 统一返回结果 | 
|      */ | 
|     @ExceptionHandler(HttpRequestMethodNotSupportedException.class) | 
|     @ResponseStatus(HttpStatus.BAD_REQUEST) | 
|     public WVPResult<String> exceptionHandler(HttpRequestMethodNotSupportedException e) { | 
|         return WVPResult.fail(ErrorCode.ERROR400); | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 自定义异常处理, 处理controller中返回的错误 | 
|      * @param e 异常 | 
|      * @return 统一返回结果 | 
|      */ | 
|     @ExceptionHandler(ControllerException.class) | 
|     @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) | 
|     public ResponseEntity<WVPResult<String>> exceptionHandler(ControllerException e) { | 
|         return new ResponseEntity<>(WVPResult.fail(e.getCode(), e.getMsg()), HttpStatus.OK); | 
|     } | 
|   | 
|     /** | 
|      * 登陆失败 | 
|      * @param e 异常 | 
|      * @return 统一返回结果 | 
|      */ | 
|     @ExceptionHandler(BadCredentialsException.class) | 
|     @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) | 
|     public ResponseEntity<WVPResult<String>> exceptionHandler(BadCredentialsException e) { | 
|         return new ResponseEntity<>(WVPResult.fail(ErrorCode.ERROR100.getCode(), e.getMessage()), HttpStatus.OK); | 
|     } | 
| } |