Spring boot configura el interceptor de excepciones global

En Spring Boot, puede manejar excepciones en aplicaciones de manera uniforme configurando interceptores de excepciones globales. El siguiente es el proceso detallado de configuración del interceptor de excepciones global:

  1. Cree una clase de manejo de excepciones (ExceptionHandler): esta clase es responsable de manejar las excepciones en la aplicación. Puede utilizar la anotación @ControllerAdvice para marcarlo como una clase de manejo de excepciones global.
@ControllerAdvice
public class ExceptionHandler {
    
    
    // 异常处理方法
    @org.springframework.web.bind.annotation.ExceptionHandler(Exception.class)
    public ResponseEntity<ErrorResponse> handleException(Exception ex) {
    
    
        // 创建一个ErrorResponse对象,设置错误信息
        ErrorResponse errorResponse = new ErrorResponse();
        errorResponse.setMessage(ex.getMessage());
        errorResponse.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());

        // 返回包含错误信息的ResponseEntity对象
        return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
    }
}
  1. Configure el interceptor de excepciones global: en la clase de configuración Spring Boot, habilite la configuración MVC a través de la anotación @EnableWebMvc y registre el interceptor de excepciones global.
@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
    
    
    @Autowired
    private ExceptionHandler exceptionHandler;

    @Override
    public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {
    
    
        resolvers.add(new ExceptionHandlerExceptionResolver(exceptionHandler));
    }
}
  1. Clases de excepción personalizadas: para manejar mejor los diferentes tipos de excepciones, puede personalizar las clases de excepción y lanzar estas excepciones cuando sea necesario.
public class CustomException extends Exception {
    
    
    public CustomException(String message) {
    
    
        super(message);
    }
}
  1. Lanzar excepciones en el controlador: en el controlador, puede activar el procesamiento del interceptor de excepciones global lanzando una excepción personalizada.
@RestController
public class MyController {
    
    
    @GetMapping("/hello")
    public String hello() throws CustomException {
    
    
        throw new CustomException("Custom Exception");
    }
}

Mediante los pasos anteriores, puede configurar un interceptor de excepciones global para manejar uniformemente las excepciones en la aplicación. Cuando se lanza una excepción personalizada en el controlador, el interceptor de excepciones global capturará la excepción, ejecutará el método de manejo de excepciones correspondiente y devolverá un objeto ResponseEntity que contiene información de error. De esta manera, se puede implementar una lógica de manejo de excepciones unificada para evitar el manejo de excepciones repetido en cada método del controlador.

Guess you like

Origin blog.csdn.net/kkwyting/article/details/133387007