java中的错误和未经检查的异常之间的区别?

Gur*_*lki 10 java oop exception

我们知道如果发生任何错误或任何未经检查的异常,那么我们的程序将停止,那么它们之间有什么区别?

Eri*_*oom 14

简而言之:

您可以并且可能应该从异常中恢复.

您可以但不应该从错误中恢复.


jus*_*tkt 13

来自Error Javadoc:

Error是Throwable的子类,表示合理的应用程序不应该尝试捕获的严重问题.大多数此类错误都是异常情况.ThreadDeath错误,虽然是"正常"条件,但也是Error的子类,因为大多数应用程序不应该尝试捕获它.

例外 Javadoc 对比

类Exception及其子类是Throwable的一种形式,它表示合理的应用程序可能想要捕获的条件.

因此,即使不需要捕获未经检查的异常,您也可以这样做.一个错误,你不想抓住.


Raz*_*zib 6

未经检查的异常:

  • 扩展的类RuntimeException称为未经检查的异常
  • 未经检查的异常不在编译时检查,而是在运行时检查。这就是为什么它们也称为“运行时异常”
  • 它们也是可通过编程恢复的问题,但与检查异常不同,它们是由代码流或配置中的错误引起的。
  • 示例ArithmeticExceptionNullPointerExceptionArrayIndexOutOfBoundsException
  • 由于它们是编程错误,因此可以通过良好/明智的编码来避免它们。例如,发生“除以零” ArithmeticEceeption。我们可以通过一个简单的 if 条件来避免它们 - if(divisor!=0)。同样,我们可以NullPointerException通过简单地检查参考文献if(object!=null)或使用更好的技术来避免

错误:

  • Error指未由 try/catch 处理的不可恢复的情况

  • 例如: OutOfMemoryErrorVirtualMachineErrorAssertionError

    这个问题在这种情况下也可能有帮助 - Runtime/Checked/Unchecked/Error-Exception