是否有可能使用VC(最好是最新版本之一)和使用C++異常,這些異常不是通過SEH實現的?注意 - 我並不是指使用C++ catch子句(/ Eha \/Ehsc)來捕捉SEH異常,我的意思是使用C++異常而不在後臺周圍飛來飛去的SEH異常。VC中的C++異常,無SEH
0
A
回答
0
默認情況下,C++異常是在SEH之上構建的。
可以改變這一點,但是你必須重新編寫大部分運行時,並且自己實現框架處理邏輯(閱讀爲:大量程序集)。
由於32位和64位版本(針對x86)的堆棧幀佈局存在巨大差異,因此您無法在它們之間重複使用非常多的代碼(64位EH也需要挖掘PE圖像的另一個區域)。
也就是說,除非真的需要,只要確保您的代碼儘可能便攜,就像您在其他地方使用異常一樣。大多數情況下,你可以假裝SEH甚至不在那裏。
+0
同意。 SEH只是一個關於VC如何爲C++異常實現'try' /'catch'的私人細節。除非你真的需要直接處理SEH異常,否則你必須使用'__try' /'__except'而不是'try' /'catch'來忽略SEH。 – 2014-11-14 21:42:37
相關問題
- 1. 的Visual Studio秀SEH異常
- 2. VS2008使用SEH啓用C++異常
- 3. (SEH)異常初始化Nlog
- 4. 使用googlemock時SEH異常
- 5. 在GUI代碼中捕獲SEH異常
- 6. VC++/C++強制包含頭異常
- 7. C++包括python.h和boost/python.hpp會導致SEH異常
- 8. 關於C++中的結構化異常(SEH)我應該知道些什麼?
- 9. VC++中的異常錯誤c0000005
- 10. 我可以從Windows SEH異常中解碼C++異常嗎? (?如果是的話,如何)
- 11. 如何在VB6中實現SEH(結構化異常處理)?
- 12. 在vC++中沒有發現異常
- 13. SEH StackOverflow異常 - 是否真的不可能捕獲?
- 14. 記錄C++中的SEH錯誤
- 15. 異常處理上下文切換和SEH
- 16. 生產微型轉儲在混合代碼DLL _caught_ SEH異常
- 17. SEH設置用於與異常鏈驗證纖維(SEHOP)活性
- 18. 抓住第一次機會異常VC++
- 19. Microsoft VC++運行時庫:異常終止
- 20. VC++異常處理 - 應用程序崩潰無論如何
- 21. 怪異的C++性能(VC 2010)
- 22. 在混合模式C++項目中從CLR-SEH異常中獲取合理的信息
- 23. C/C++ SEH實施例建立失敗
- 24. 在C++中拋出異常異常
- 25. 無效的轉換異常C#ASP.Net
- 26. C#:無效的轉換異常
- 27. 無效的操作異常MVC C#
- 28. 無法趕上的try-catch C#異常
- 29. C#中的算術異常
- 30. C#中的System.FormatException異常#
我很想知道你的基本目標是什麼,以及你的意思是「飛來飛去」。結構化異常處理可能很複雜,但並不混亂。 – 2014-11-14 21:06:35
更改我的答案,秒。這將取代運行時的這一部分(_CxxThrowException et。al。)。 – defube 2014-11-14 21:07:37