我怎麼處理堆棧溢出異常在我發生的遊戲中發生時,我玩儘可能的遊戲plz答覆?我該如何處理我的遊戲中的堆棧溢出異常?
回答
try
{
//your work
}
catch(StackOverflowException ex)
{
// handle it
}
CLR?你的意思是JVM? :) – bzlm 2010-10-01 09:48:13
.WriteLine(或Java等價物)需要堆棧空間。這是否會工作100%?我相當懷疑它。 – 2010-10-01 09:49:48
@Lasse V. Karlsen @bzlm更新了 – 2010-10-01 09:55:33
嗯,說白了,你可能不應該試圖手柄堆棧溢出異常。
在某些情況下,你不能響應堆棧溢出異常執行代碼,因爲這些代碼需要堆棧空間,這是不可用的,因此雙誤。
相反,你應該改變的代碼,從而完全避免它。
這可能意味着改變你的算法,一些其他的算法,或可能實現在自己的堆棧基於堆棧的遞歸併切換到一個循環來代替。
堆棧溢出是最經常涉及到遞歸調用,而不是GC。
GC會給你帶來內存不足的異常。
public static void main(String args[])
{
try
{
LongRecursiveMethodOrSomethingLikeThat();
} catch(StackOverflowError t) {
// Generic catch// catch(Error e)
// anything: catch(Throwable t)
System.out.println("Error:"+t);
t.printStackTrace();
}
這是安全的嗎?堆棧是否展開以便實際上在catch塊中具有堆棧空間?如果不是,你怎麼稱呼任何東西? – 2010-10-01 10:29:12
@Lasse V. Karlsen:我明白你來自哪裏。它不太可能在捕獲報表中發揮作用。理想情況下,發生Stackflow時,應該讓應用程序崩潰。 – 2010-10-01 11:11:36
請注意,我不知道:)我只是問,在.NET中,你不能假設你有任何調用的堆棧空間,但在Java中,例如,你可能會從堆棧中退出堆棧的異常返回到catch塊,因此釋放了足夠的空間來執行代碼。 – 2010-10-01 11:14:28
- 1. CPP_TEST.exe中的0x7604c128未處理的異常:0xC00000FD:堆棧溢出
- 2. 異常處理下溢,而在堆棧
- 3. 堆棧溢出異常
- 4. 堆棧溢出異常
- 5. 堆棧溢出異常
- 6. 如何縮小堆棧溢出異常?
- 7. IIS中的堆棧溢出異常
- 8. istream未處理的異常,堆棧溢出
- 9. CImg錯誤未處理的異常堆棧溢出
- 10. 如何讓我的堆棧溢出?
- 11. 之前堆棧溢出異常的main()
- 12. .NET異常處理程序導致Visual C++ 6.0異常的堆棧溢出
- 13. 堆棧溢出我猜insmod
- 14. 鏈接列表中的唯一指針 - 未處理的異常,堆棧溢出
- 15. OpenARK-SDK.exe中的0x00007FF74F27A526未處理的異常:0xC00000FD:堆棧溢出(參數:0x0000000000000001,0x000000EEC5803FD8)
- 16. C#WPF Window.ShowDialog堆棧溢出異常
- 17. 避免堆棧溢出異常
- 18. 調試C# - 堆棧溢出異常?
- 19. AppDomain.FirstChanceException和堆棧溢出異常
- 20. 捕捉堆棧溢出異常C#
- 21. 堆棧溢出異常沒有無限循環(據我所知)
- 22. 我應該如何處理遊戲開發中的延遲?
- 23. Database.EnsureCreated處出現堆棧溢出異常EF 7 ASP.NET 5 MVC 6
- 24. 如何處理或避免C++中的堆棧溢出
- 25. 工藝處理堆棧溢出
- 26. 調用堆棧上的異常處理堆棧幀的順序
- 27. 我該如何解決這個堆棧溢出錯誤?
- 28. 我該如何解決這個堆棧溢出錯誤?
- 29. F#異步堆棧溢出
- 30. 堆棧溢出堆棧溢出
不要無限遞歸。 – bzlm 2010-10-01 09:47:35
我在我的代碼中有錯誤如何讓它停止? – 2010-10-01 09:52:05
@bzlm您的評論是否提及問題標題包含「堆棧溢出」這個短語的事實? ;) – 2010-10-01 15:10:21