12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package com.technology.huahai.common.handler;
- import com.technology.huahai.common.core.controller.domain.AjaxResult;
- import com.technology.huahai.common.exception.CsmException;
- import com.technology.huahai.common.exception.CsmTokenException;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.http.HttpStatus;
- import org.springframework.http.ResponseEntity;
- import org.springframework.validation.FieldError;
- import org.springframework.web.bind.MethodArgumentNotValidException;
- import org.springframework.web.bind.MissingServletRequestParameterException;
- import org.springframework.web.bind.annotation.ControllerAdvice;
- import org.springframework.web.bind.annotation.ExceptionHandler;
- import org.springframework.web.client.ResourceAccessException;
- import org.springframework.web.context.request.WebRequest;
- import java.util.HashMap;
- import java.util.Map;
- @ControllerAdvice
- public class GlobalExceptionHandler {
- private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
- @ExceptionHandler(CsmException.class)
- public ResponseEntity<?> resourceNotFoundException(CsmException ex, WebRequest request) {
- logger.error("Unexpected exception occurred: ", ex);
- return new ResponseEntity<>(AjaxResult.error(ex.getMessage()), HttpStatus.OK);
- }
- @ExceptionHandler(CsmTokenException.class)
- public ResponseEntity<?> tokenException(CsmTokenException ex, WebRequest request) {
- logger.error("token exception occurred: ", ex);
- return new ResponseEntity<>(AjaxResult.error(ex.getMessage()), HttpStatus.UNAUTHORIZED);
- }
- @ExceptionHandler(MissingServletRequestParameterException.class)
- public ResponseEntity<?> MissingRequestParameterException(MissingServletRequestParameterException ex, WebRequest request) {
- logger.error("token exception occurred: ", ex);
- String message = ex.getParameterName() + "参数缺失";
- return new ResponseEntity<>(AjaxResult.error(message), HttpStatus.OK);
- }
- @ExceptionHandler(ResourceAccessException.class)
- public ResponseEntity<?> rpcException(ResourceAccessException ex, WebRequest request) {
- logger.error("远程调用异常: ", ex);
- return new ResponseEntity<>(AjaxResult.error("远程调用异常"), HttpStatus.INTERNAL_SERVER_ERROR);
- }
- @ExceptionHandler(MethodArgumentNotValidException.class)
- public ResponseEntity<?> paramCheckException(MethodArgumentNotValidException ex, WebRequest request) {
- Map<String, String> errors = new HashMap<>();
- ex.getBindingResult().getAllErrors().forEach((error) -> {
- String fieldName = ((FieldError) error).getField();
- String errorMessage = error.getDefaultMessage();
- errors.put(fieldName, errorMessage);
- });
- String res = String.join(",", errors.values());
- return new ResponseEntity<>(AjaxResult.error(res), HttpStatus.OK);
- }
- // 处理所有其他异常
- @ExceptionHandler(Exception.class)
- public ResponseEntity<?> globalExceptionHandler(Exception ex, WebRequest request) {
- logger.error("Unexpected exception occurred: ", ex);
- return new ResponseEntity<>(AjaxResult.error(ex.getClass().toString()), HttpStatus.INTERNAL_SERVER_ERROR);
- }
- }
|