java RuntimeExceptions和Errors

时间:2015-07-19 14:30:04

标签: java runtimeexception

根据“Sams在21天内自学Java”一书

  

“未经检查的异常,也称为运行时异常......”

根据这一事实,错误也是运行时异常,因为它们是未经检查的异常(或者它不是它所说的那样?)

这让我对以下陈述感到困惑。

  

运行时异常是Java运行时的内部错误   环境。

如果它谈论java RuntimeExceptions然后,它是假的,因为它们是异常,被描述为“异常描述由您的程序和外部环境引起的错误。这些错误可以由您的程序捕获和处理。”

但另一方面,如果它引用了java Errors,那么它们就是内部错误。

那句话是完全正确还是错误?

3 个答案:

答案 0 :(得分:6)

这种解释的最佳位置是official documentationThrowable是超类,其中有ErrorExceptionRuntimeExceptionException下的子类。

  • Error&它的子类未经检查。
  • Exception&检查其子类;
    • 除了RuntimeException分支。

ErrorRuntimeException类之间的差异是

  • Error不在你的掌控之中。它们通常是一些系统/环境问题;例如OutOfMemoryError
  • 另一方面,
  • RuntimeException代表了程序逻辑中的一个缺陷,即它在你的控制之下。你可以纠正它。例如。 NullPointerException

答案 1 :(得分:1)

错误不应该被捕获,因为它是由严重问题引起的。 RuntimeException仅在运行时抛出,并且当您没有将fence放入可能抛出它们的代码时,编译器不会抱怨。 应该捕获已检查的异常或在调用级别发送异常

答案 2 :(得分:0)

运行时异常不需要具有try-catch块,构造函数或方法也不需要throws语句。

来自oracle的docs page做了一些很好的解释。