`@ControllerAdvice`注解可以用于处理哪些类型的异常?

@ControllerAdvice注解可以用于处理多种类型的异常,以下是一些常见的情况:

一、处理通用异常

  1. Exception:可以捕获所有未被特定处理的异常,作为兜底的全局异常处理。例如:
    @ExceptionHandler(Exception.class)
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    @ResponseBody
    public Map<String, Object> handleException(Exception e) {
        Map<String, Object> errorResponse = new HashMap<>();
        errorResponse.put("message", "An unexpected error occurred.");
        errorResponse.put("error", e.getMessage());
        return errorResponse;
    }
    

二、处理特定技术相关异常

  1. NullPointerException:空指针异常。当程序中出现对空对象的引用时可能抛出。

  2. IllegalArgumentException:非法参数异常。当传入的参数不合法时可能抛出。

  3. NumberFormatException:数字格式异常。当尝试将一个非数字字符串转换为数字类型时可能抛出。

    针对这些特定异常可以进行专门的处理,提供更有针对性的错误信息:

    @ExceptionHandler(NullPointerException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    @ResponseBody
    public Map<String, Object> handleNullPointerException(NullPointerException e) {
        Map<String, Object> errorResponse = new HashMap<>();
        errorResponse.put("message", "Null pointer exception occurred. Please check your input.");
        return errorResponse;
    }
    

三、处理业务相关异常

可以自定义业务异常类,并使用@ControllerAdvice来处理这些特定的业务异常。例如:

  1. 定义业务异常类:

    public class BusinessException extends RuntimeException {
        public BusinessException(String message) {
            super(message);
        }
    }
    
  2. 处理业务异常:

    @ExceptionHandler(BusinessException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    @ResponseBody
    public Map<String, Object> handleBusinessException(BusinessException e) {
        Map<String, Object> errorResponse = new HashMap<>();
        errorResponse.put("message", e.getMessage());
        return errorResponse;
    }
    

通过以上方式,可以根据不同类型的异常提供定制化的错误响应,提高应用的健壮性和用户体验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值