Java中错误和异常之间的区别
作者:
Laura McKinney
创建日期:
2 四月 2021
更新日期:
6 可能 2024
内容
“ Throwable”充当Java错误和异常层次结构的根源。 “错误”是程序代码无法处理的关键条件。 “异常”是程序代码可以处理的特殊情况。错误和异常之间的显着区别是 错误 是由于系统资源不足引起的,并且 例外 是由于您的代码引起的。让我们研究错误和异常之间的其他差异以及比较表。
- 比较表
- 定义
- 关键差异
- 结论
比较表
比较基础 | 错误 | 例外 |
---|---|---|
基本的 | 由于缺少系统资源而导致错误。 | 由于代码而导致异常。 |
复苏 | 错误是无法恢复的。 | 异常是可恢复的。 |
关键词 | 程序代码无法处理错误。 | 使用三个关键字“ try”,“ catch”和“ throw”处理异常。 |
后果 | 检测到错误后,程序将异常终止。 | 作为检测到的异常,它分别由“ throw”和“ catch”关键字引发并捕获。 |
种类 | 错误分类为未检查类型。 | 异常分为已检查或未检查类型。 |
包 | 在Java中,错误定义为“ java.lang.Error”包。 | 在Java中,“ java.lang.Exception”中定义了一个异常。 |
例 | 内存不足,StackOverFlow。 | 已检查的异常:NoSuchMethod,ClassNotFound。 未经检查的异常:NullPointer,IndexOutOfBounds。 |
错误的定义
“错误”是内置类“ Throwable”的子类。错误是由于缺少系统资源而发生的关键条件,程序代码无法处理错误。错误无法以任何方式恢复,因为它们无法被创建,抛出,捕获或回复。错误是由于灾难性故障引起的,通常您的程序无法处理。
错误始终是未经检查的类型,因为编译器对错误的发生一无所知。错误始终在运行时环境中发生。可以通过一个示例来解释该错误,该程序有堆栈溢出错误,内存不足错误或系统崩溃错误,这种错误是系统引起的。该代码不对此类错误负责。错误发生的结果是程序异常终止。
例外的定义
“ Exception”还是内置类“ Throwable”的子类。例外是在运行时环境中发生的特殊情况。在大多数情况下,异常是由程序的代码引起的。但是,异常可以由程序本身处理,因为异常是可恢复的。使用三个关键字“ try”,“ catch”,“ throw”处理异常。编写异常的语法是:
尝试{//在此处编写代码}捕获(异常类型){//在此处编写代码}
在上面的代码中,try块中编写的代码是您要监视的异常代码。如果异常发生在try块中,则使用“ throw”关键字抛出该异常。抛出的异常可以由上述代码的“ catch”块捕获。 “异常类型”是已发生的异常的类型。
可以简单地说,由于代码不正确而发生的错误称为异常。例如,如果找不到请求的类,或者找不到请求的方法。这些异常是由于程序中的代码引起的。系统不对此类异常负责。异常分为“已检查”和“未检查”。未检查的异常不是编译器所知的,因为它们在运行时会发生,但是,编译器具有关于检查的异常的知识,因为它们在编译期间是已知的。
- 仅当系统资源不足时才会发生错误,而如果代码有问题则会导致异常。
- 错误永远无法恢复,而可以通过准备处理异常的代码来恢复异常。
- 错误永远不会被处理,但是,如果将引发异常的代码编写在try and catch块中,则该代码可以处理异常。
- 如果发生错误,程序将异常终止。另一方面,如果发生异常,则程序将引发异常,并使用try and catch块对其进行处理。
- 错误属于未经检查的类型,即编译器不了解错误,而将异常分为检查和未检查两种。
- 错误在java.lang.Error包中定义,而异常定义在java.lang.Exception中。
结论:
异常是程序编码中错误的结果,而错误是系统功能不正常的结果