如何在Spring Boot应用中配置全局异常处理器?

在 Spring Boot 应用中,可以通过以下步骤配置全局异常处理器:

一、创建全局异常处理类

  1. 创建一个类并添加@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 {
    }
    

二、处理特定异常

  1. 使用@ExceptionHandler注解来指定要处理的异常类型。例如,处理NullPointerException异常:

    @ExceptionHandler(NullPointerException.class)
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    @ResponseBody
    public String handleNullPointerException(NullPointerException ex) {
        return "发生了空指针异常:" + ex.getMessage();
    }
    

    在这个方法中,可以根据不同的异常类型返回不同的响应内容,也可以进行日志记录等操作。

  2. 可以处理多个异常类型,例如:

    @ExceptionHandler({IllegalArgumentException.class, IllegalStateException.class})
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    @ResponseBody
    public String handleInvalidArgumentExceptions(Exception ex) {
        return "发生了非法参数或非法状态异常:" + ex.getMessage();
    }
    

三、自定义异常处理

  1. 如果有自定义的异常,可以专门为其创建处理方法。例如,假设存在一个自定义异常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 应用中配置全局异常处理器,统一处理应用中可能出现的各种异常,提高应用的稳定性和可维护性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值