gpt4 book ai didi

java - 为什么 "java.lang.OutOfMemoryError: Java heap space"没有被抓到?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:02:42 25 4
gpt4 key购买 nike

我在 Java Web 应用程序中有一个线程导致 java.lang.OutOfMemoryError: Java heap space 异常,但 try/catch block 没有捕获错误。

示例代码:

private void doSomeWork()
{
try
{
processData(); //Causes OutOfMemoryError
System.out.println("This line does not execute");
}
catch (Exception e)
{
System.out.println("Exception. This line does not execute.");
//Log error
}
finally
{
System.out.println("finally. This line does execute");
System.out.println("Thread name: " + Thread.currentThread().getName());

}
}

输出:

finally.  This line does execute Thread name: _Worker-8Exception in thread "_Worker-8" java.lang.OutOfMemoryError: Java heap space...

背景:

我最近接手了这个 Java 项目,我正在努力跟上 Java 和这个项目的速度。我是一名 C# 开发人员,所以我还不熟悉这个项目或 Java。我知道我可以使用 -Xmx 设置修复错误,但我有兴趣捕获此错误以便记录它。该错误未显示在任何日志文件中,输出显示在 Eclipse Debug模式下的控制台中。

最佳答案

因为 OutOfMemoryError 是一个 Error ,不是 Exception .由于 OutOfMemoryError 不是 Exception 的子类,因此 catch (Exception e) 不适用。

OutOfMemoryError 确实扩展了 Throwable ,但是,所以你应该能够捕获它。这是一个 SO discussion关于何时(如果有的话)你应该捕获错误。通常,由于您对此无能为力,因此建议不要费心在生产代码中捕获错误。但考虑到您尝试调试正在发生的事情的特殊情况,它可能会有所帮助。

关于java - 为什么 "java.lang.OutOfMemoryError: Java heap space"没有被抓到?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1888602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com