| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | package com.doumee.config.handler; | 
 |  |  |  | 
 |  |  | import com.doumee.core.constants.ResponseStatus; | 
 |  |  | import com.doumee.core.exception.BusinessException; | 
 |  |  | import com.doumee.core.model.ApiResponse; | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import org.apache.commons.lang3.StringUtils; | 
 |  |  | import org.apache.shiro.authz.UnauthorizedException; | 
 |  |  | import org.springframework.validation.BindingResult; | 
 |  |  | import org.springframework.validation.FieldError; | 
 |  |  | import org.springframework.web.bind.MethodArgumentNotValidException; | 
 |  |  | import org.springframework.web.bind.annotation.ExceptionHandler; | 
 |  |  | import org.springframework.web.bind.annotation.RestControllerAdvice; | 
 |  |  |  | 
 |  |  | import java.util.ArrayList; | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * å
¨å±å¼å¸¸å¤ç | 
 |  |  |  * @author Eva.Caesar Liu | 
 |  |  |  * @date 2023/03/21 14:49 | 
 |  |  |  */ | 
 |  |  | @Slf4j | 
 |  |  | @RestControllerAdvice | 
 |  |  | public class GlobalExceptionHandler { | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * ä¸å¡å¼å¸¸å¤ç | 
 |  |  |      */ | 
 |  |  |     @ExceptionHandler(BusinessException.class) | 
 |  |  |     public <T> ApiResponse<T> handleBusinessException (BusinessException e) { | 
 |  |  |         log.error(e.getMessage(), e); | 
 |  |  |         return ApiResponse.failed(e.getCode(), e.getMessage()); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * æ æéå¼å¸¸å¤ç | 
 |  |  |      */ | 
 |  |  |     @ExceptionHandler(UnauthorizedException.class) | 
 |  |  |     public <T> ApiResponse<T> handleUnauthorizedException (UnauthorizedException e) { | 
 |  |  |         log.error(e.getMessage(), e); | 
 |  |  |         return ApiResponse.failed("没ææä½æé"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * åæ°éªè¯æªéè¿å¼å¸¸å¤ç | 
 |  |  |      */ | 
 |  |  |     @ExceptionHandler(MethodArgumentNotValidException.class) | 
 |  |  |     public <T> ApiResponse<T> handleMethodArgumentNotValidException (MethodArgumentNotValidException e) { | 
 |  |  |         log.error(e.getMessage(), e); | 
 |  |  |         BindingResult bindingResult = e.getBindingResult(); | 
 |  |  |         List<String> errors = new ArrayList<>(); | 
 |  |  |         for(FieldError fieldError : bindingResult.getFieldErrors()){ | 
 |  |  |             errors.add(fieldError.getDefaultMessage()); | 
 |  |  |         } | 
 |  |  |         return ApiResponse.failed(ResponseStatus.BAD_REQUEST.getCode(), StringUtils.join(errors)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * å
¶å®å¼å¸¸å¤ç | 
 |  |  |      */ | 
 |  |  |     @ExceptionHandler(Exception.class) | 
 |  |  |     public <T> ApiResponse<T> handleException (Exception e) { | 
 |  |  |         log.error(e.getMessage(), e); | 
 |  |  |         return ApiResponse.failed(ResponseStatus.SERVER_ERROR, e); | 
 |  |  |     } | 
 |  |  | } |