任何人都可以請解釋如何StackOverFlowError的工作?StackOverFlowError處理和Java恢復
我知道無盡的遞歸會導致StackOverFlowError,但是堆棧已滿後還會執行其他任何方法嗎?我已經處理catch塊中的錯誤。我想知道java是如何工作的,或者從被捕獲的錯誤中恢復過來。
示例代碼:
public class Test {
public static void main(String[] args) {
try {
show();
} catch(StackOverflowError e) {
System.out.println(e);
}
System.out.println("After StackOverFlowError");
display();
}
static void show() {
show();
}
static void display() {
System.out.println("Hello New Function");
}
}
,輸出是:
java.lang.StackOverflowError After StackOverFlowError Hello New Function
通常,您不會從StackOverflowError中恢復,這是一個運行時異常。如果遞歸爆炸,就是這樣,修復你的代碼或者嘗試在不同的條件下再次運行它。 –
我想你沒有得到這個問題。 StackOverFlowError是故意生成的,以瞭解它如何工作以及Java如何從中恢復。我的問題是,如果在無盡的遞歸之後,堆棧已滿,技術上沒有其他方法應該推入堆棧,那麼display()如何被調用? java是否從中恢復? – Divyanshi
你發現了這個例外,你對某件事感到驚訝嗎?遞歸仍然死亡,如果你期待結果回來,你可能不會得到它。通常情況下,您在實踐中不會捕獲像'StackOverflowError'這樣的未經檢查的異常。 –