未检查的异常
未检查的异常
未检查的异常(Unchecked Exception)是指在编译时不需要强制捕获或声明的异常。
在 Java 中,未检查的异常是 RuntimeException 类及其子类的实例,以及 Error 类及其子类的实例。
未检查的异常通常表示程序中的逻辑错误或不应当发生的情况。
主要特点
不需要显式处理:编译器不会强制要求在代码中捕获或声明这些异常。开发者可以选择处理这些异常,也可以不处理。
程序逻辑错误:未检查的异常通常表示程序内部的逻辑错误,例如访问数组的非法索引、空指针引用等。它们通常表示错误的程序设计。
运行时异常:未检查的异常通常在程序运行时发生,而不是在编译时。例如:
NullPointerExceptionArrayIndexOutOfBoundsExceptionClassCastException
事务管理中的应用
在 Spring 中,默认情况下,只有未检查的异常(如 RuntimeException)会导致事务回滚。这意味着:
- 如果方法执行中抛出未检查的异常,Spring 会自动回滚当前事务。
- 如果方法执行中抛出已检查的异常(如
IOException),Spring 默认不会回滚事务,除非在@Transactional注解中显式指定rollbackFor属性。
这种设计是为了防止因业务逻辑的可预见性错误而导致的事务回滚,从而提供更大的灵活性。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CautionX!
