Java 中的异常处理是处理运行时代码序列中出现的特定错误的强大机制之一。异常不过是运行时出现的错误,它扰乱了应用程序的正常流程。

它通常发生在一段代码中,一旦发生,就会创建一个代表异常的对象,并在导致异常的方法中抛出。结果,程序或应用程序被中断,导致应用程序异常终止,这是不可取的。这就是为什么要处理这些异常的原因,这就是异常处理机制的作用所在。

Java 中存在两种类型的异常—校验异常(Checked Exception)和非校验异常(Unchecked Exception)。在本文中,我们将详细讨论什么是”校验异常”和”非校验异常”,以及何时使用它们,最后,我们还将讨论两者的区别。

什么是 Java 中的校验异常?

这些是在编译时检查和处理的异常。Java 在标准包 java.lang 中定义了多个异常类,最常见的异常是标准类型 RuntimeException 的子类。

那些发生在程序直接控制之外的异常被称为检查异常。如果一个方法在编译时抛出了一个自己无法处理的检查异常,那么它必须在 catch {} 块中处理该异常,或者使用 throws 关键字声明该异常,否则将导致编译错误。编译器会检查每个抛出语句的异常对象类型,如果显示已检查,编译器就会检查源代码,确保在抛出或声明异常的方法中处理异常,以便进一步处理。

除了 RuntimeException 之外,所有由 Exception 描述的异常(它的直接子类)都被称为检查异常。什么时候使用检查异常?当我们确切知道异常发生时该做什么,或者失败的几率较大时,可以选择使用检查异常。Java 库中的一些校验异常示例包括 IOException、DataAccessException、IllegalAccessException、InterruptedException、ClassNotFoundException、InvocationTargetException 等。

什么是 Java 中的未检查异常?

这些异常在编译时未被检查。未校验异常代表的情况通常反映了程序逻辑中的错误,并且无法在运行时恢复。

简单地说,未检查异常就是没有在 try-catch 块中捕获的异常。它们不需要被明确捕获。事实上,当发生未检查异常时,Java 会自动处理异常。未选中异常大多是由于编程错误造成的,如访问数组绑定之外的元素或访问空对象的方法时。在 Java 中,throwable 下的所有异常都是已检查异常,而属于 Error 和 RuntimeException 的直接子类的异常则是未检查异常。

未选中异常的最大优点是不会降低代码的可读性,同时保持客户端代码的整洁。未检查异常的例子包括算术异常(ArithmeticException)、类转换异常(ClassCastException)、空指针异常(NullPointerException)、数组索引超出边界(ArrayIndexOutOfBound)、非法参数异常(IllegalArgumentException)、非法状态异常(IllegalStateException)、数组存储异常(ArrayStoreException)、安全异常(SecurityException)等。

校验异常与非校验异常的区别

已校验异常和未校验异常的定义
校验异常和非校验异常是 Java 中存在的两种异常类型,用于确保应用程序的正常运行。两者的目的相同,都是为了处理 Java 中的异常,虽然两者在功能上没有区别,但并没有单一的规则来决定何时使用选中异常,何时使用未选中异常。校验异常(Checked Exception)是在编译时进行校验的异常,而未校验异常(Unchecked Exception)是在编译时不进行校验的异常。

校验异常和未校验异常的基本原理
校验异常指的是在程序直接控制之外发生的无效情况,而未校验异常指的是程序中的错误或程序逻辑中的错误,无法在运行时恢复。

异常处理
如果一个方法抛出已检查异常,编译器会检查该方法是否使用 try-catch 块或使用 throws 关键字指定异常来处理该异常。如果方法没有提供处理代码,就会显示编译错误。相反,程序会正常编译,因为编译器在编译时不会检查未检查异常。

已检查异常和未检查异常的原因
非 RunTimeException 派生的异常通常会被处理,而运行时出现的异常则很少被处理。当出现故障的几率过高时,就会出现校验异常。而未检查异常则主要是由于编程错误造成的。RuntimeException 和 Error 类下的所有异常都是未检查异常,而 throwable 类下的所有其他异常都是检查异常。

已校验异常和未校验异常的示例
已检查异常的例子包括 IOException、DataAccessException、IllegalAccessException、InterruptedException、ClassNotFoundException 等。未检查异常的例子包括 NullPointerException、ArithmeticException、ArrayIndexOutOfBound、IllegalArgumentException、IllegalStateException、ArrayStoreException、SecurityException 等。

校验异常与非校验异常摘要

校验异常和未校验异常是 Java 中存在的两种异常类型。虽然这两种异常的功能相同,但它们也有一定的区别。校验异常和未校验异常的主要区别在于,前者由编译器进行校验,而后者则不会引起编译器的注意。在编译时被检查和处理的异常是已检查异常,而在编译时未被检查和处理的异常是未检查异常。本文将解释什么是已检查异常,什么是未检查异常,何时使用它们,并解释两者的区别。

已校验异常和未校验异常的区别

本文由网友:禄诗云 投稿 欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:已校验异常和未校验异常的区别
本文链接:https://www.vsdiffer.com/vs/checked-vs-unchecked-exception.html
免责声明:以上内容仅代表 网友:禄诗云 个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。