我正在运行一个HtmlUnit Web自动化应用程序。它通常可以正常工作,但是,有时它会过度使用StackOverflowError。这通常发生在JS线程的某个地方,因此,我无法通过try..catch包含该语句来捕获它。
就目前而言,每次我获得StackOverflow时,应用程序都会崩溃。我试图用
做到这一点Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
System.out.println("Uncaught exception in thread :"+t.getName());
e.printStackTrace();
scr = new HtmlUnitWrapper();
}
});
但应用程序一直在崩溃。
我能做些什么来捕捉和处理异常吗?
答案 0 :(得分:3)
Stackoverflow总是在JVM中出现致命错误,这意味着JVM堆栈内存不足,没有什么可以解决的。
这意味着有一些方法正在递归并烧掉堆栈。
既然你说,当页面上有Javascript时会发生这种情况,我会假设Javascript引起某种递归,尝试更改Javascript逻辑并查看是否修复了Stackoverflow问题,这是你的根本原因并且“解决”这个问题的唯一方法。