我正在運行一個HtmlUnit網絡自動化應用程序。它通常能正常工作,但是,有時它會隨着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();
}
});
但應用程序不斷崩潰。
還有什麼我可以做到捕捉和處理異常?
你越來越stackoverflow的原因將表明你有某種錯誤的邏輯。你在使用遞歸嗎?或者可能調用了很多方法,並且沒有使用足夠的設置運行JVM? – LordDoskias
我有時會在HtmlUnit試圖解釋頁面上的JS時獲得它。由於我需要帶JS的頁面,除了編寫我自己的JS引擎外,我可以做的事情很少,反正可能會更糟糕。正如我所見,留給我的唯一選擇就是解決這個錯誤。我無法可靠地重現它,當頁面重新加載時,它通常會消失 –