java - 为什么 Java 允许捕获应用程序不应该处理的错误类型?

标签 java exception out-of-memory

在 Java 中,允许以下行为:

public void handleError() {
    try {
        System.out.println("Out of memory error!!");
    } catch(OutOfMemoryError outOfMemoryError) {
        System.out.println(
            "This is catch block of out of memory error Message:"+
            outOfMemoryError.getMessage());
    }
}

上面的代码在什么情况下有效?如果应用程序内存不足,那么应用程序还会执行吗?为什么上面的代码有效?

最佳答案

当堆上没有足够的内存来创建特定对象时,会引发 OutOfMemoryError 异常。因此,如果您尝试创建一个需要堆拥有的最大空间的大型对象,您将会收到错误。但这并不一定意味着没有可用内存。您仍然可以有足够的内存来创建异常对象,并运行 catch block 中的代码。

关于java - 为什么 Java 允许捕获应用程序不应该处理的错误类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25986750/

相关文章:

c# - StringWriter.ToString() 处的 OutOfMemoryException

java - Neo4j 在节点/关系创建时嵌入内存不足

java - AES128 解密 :javax. crypto.badpaddingexception pad block 已损坏

java - 如何在没有 JDK 的机器上使用 Jarsigner

java - 生成随机出生日期

java - Gson - 避免每个 Action 有多个类

PHP异常冒泡困惑

javascript - 引发 EvalError 和 InternalError

安卓 : java. lang.OutOfMemoryError : Failed to allocate with free bytes and 70MB until OOM when using gson. toJson()

java - 使用 MinGW 将 C 库编译为 DLL