作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 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/
我是一名优秀的程序员,十分优秀!