在 Spring Boot 应用中,可以通过以下步骤配置全局异常处理器:
一、创建全局异常处理类
-
创建一个类并添加
@ControllerAdvice
注解,这个注解表示该类是一个全局的控制器增强类,用于处理控制器中抛出的异常。import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; @ControllerAdvice public class GlobalExceptionHandler { }
二、处理特定异常
-
使用
@ExceptionHandler
注解来指定要处理的异常类型。例如,处理NullPointerException
异常:@ExceptionHandler(NullPointerException.class) @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) @ResponseBody public String handleNullPointerException(NullPointerException ex) { return "发生了空指针异常:" + ex.getMessage(); }
在这个方法中,可以根据不同的异常类型返回不同的响应内容,也可以进行日志记录等操作。
-
可以处理多个异常类型,例如:
@ExceptionHandler({IllegalArgumentException.class, IllegalStateException.class}) @ResponseStatus(HttpStatus.BAD_REQUEST) @ResponseBody public String handleInvalidArgumentExceptions(Exception ex) { return "发生了非法参数或非法状态异常:" + ex.getMessage(); }
三、自定义异常处理
-
如果有自定义的异常,可以专门为其创建处理方法。例如,假设存在一个自定义异常
MyCustomException
:class MyCustomException extends RuntimeException { public MyCustomException(String message) { super(message); } }
然后在全局异常处理类中处理这个异常:
@ExceptionHandler(MyCustomException.class) @ResponseStatus(HttpStatus.CUSTOM_STATUS) // 设置自定义的状态码 @ResponseBody public String handleMyCustomException(MyCustomException ex) { return "发生了自定义异常:" + ex.getMessage(); }
通过以上步骤,就可以在 Spring Boot 应用中配置全局异常处理器,统一处理应用中可能出现的各种异常,提高应用的稳定性和可维护性。
标签:自定义,Spring,Boot,ExceptionHandler,springframework,处理器,异常,class,ex From: https://blog.csdn.net/alankuo/article/details/143050831