“致命的运行时错误导致程序 立即终止,但未成功执行其致命任务 运行时错误使程序运行完成,经常产生 结果不正确” 我已经阅读了这些信息,但是我需要一些示例来进一步说明该概念...
答案 0 :(得分:1)
例如,OutOfMemoryError
很难恢复(即使有可能),而通过将信息返回给用户则很容易处理IllegalArgumentException
。
答案 1 :(得分:1)
诸如OutOfMemoryError,VirtualMachineError之类的致命错误通常不采取恢复操作。
Docs说:
错误是Throwable的子类,它指示严重的问题,而合理的应用程序不应尝试抓住这些问题。大多数此类错误是异常情况。 ThreadDeath错误虽然是“正常”情况,但它也是Error的子类,因为大多数应用程序都不应尝试捕获它。 不需要方法在其throws子句中声明可能在方法执行期间抛出但未被捕获的Error的任何子类,因为这些错误是不应该发生的异常情况。也就是说,出于编译时检查异常的目的,Error及其子类被视为未经检查的异常。
例如,如果您运行的递归任务没有执行中断的基本条件。
int recursiveSum(int n){
return n + recursiveSum(n+1);
}
您遇到StackOverFlowError,这意味着您已填满堆栈,并且JVM无法继续正常执行程序。
就像另一个示例一样,由于硬件或Internet连接问题,可能会出现错误。
但是检查异常通常是程序的正常行为。它为使用您的应用程序的用户定义了约束。