如果 ApiException 继承 RuntimeException,并且在项目中抛出的异常类型是 ApiException,则 @ExceptionHandler(value = ApiException.class) 会生效,并且能够捕获到该异常。

然而,如果在项目中抛出的异常类型是 RuntimeException,而不是 ApiException,则 @ExceptionHandler(value = ApiException.class) 将无法捕获该异常。

这是因为 RuntimeException 及其子类属于非受检异常(Unchecked Exception),Java 中的非受检异常可以不显式地在方法签名中声明或捕获,而是由 Java 运行时系统自动处理。因此,对于非受检异常,@ExceptionHandler 注解无法捕获到并处理该异常。

如果需要捕获 RuntimeException 及其子类的异常,可以使用 @ExceptionHandler(Exception.class) 来捕获所有异常,包括 RuntimeException 和 ApiException 等异常。

@ExceptionHandler(value = ApiException.class) 捕获异常:ApiException 继承 RuntimeException 的影响

原文地址: https://www.cveoy.top/t/topic/qcpt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录