我想知道是否有一些編譯參數,最好在gcc(g ++)中將try/catch塊的缺失視爲錯誤。這是java中的標準行爲,我總是喜歡它。強制C++編譯器檢查異常處理
2
A
回答
8
由於在Java中checked異常依靠throw
簽名,您可以瞭解爲什麼你會不會想在SO我們使用在C throw
函數簽名++中this question。
0
有一件事你可以用C++做的例外是在你的函數中使用異常規範。這並不積極防止非上市例外從該函數被拋出,但它使他們的錯誤(和他們都映射到預定義unexpected()
。
所以int f() throw();
是C++被上調「對待任何異常函數f錯誤」
+1
值得注意的是它被「視爲_runtime_錯誤」。一個C++編譯器仍然需要編譯'void foo()throw(){throw 42; }'。 – 2009-11-30 19:58:00
1
好,使用異常規格通常是一個壞主意:http://cplusplus.co.il/2009/10/06/exception-specifications/
如果不使用這些,編譯器基本上無法知道這可能會引發異常的方式,所以沒有方式做到這一點。
你可以做什麼,是提供你自己的實現std :: terminate(通過調用std :: set_terminate())並處理未捕獲的異常。
相關問題
- 1. JIT編譯器和異常處理
- 2. C++/GCC:如何檢測未處理的異常在編譯時
- 3. userdefined檢查異常處理
- 4. C++異常處理查詢
- 5. 沒有強制的異常處理?
- 6. 編譯器部隊處理未檢查異常的重新拋出
- 7. 如何檢查c#編譯器拋出的異常?
- 8. 使用C預處理器指令編譯時間檢查
- 9. C預處理器與C編譯器
- 10. Java編譯時檢查異常
- 11. C++異常處理
- 12. C++異常處理
- 13. C++處理異常
- 14. 異常處理C++
- 15. C++異常處理
- 16. C#異常處理
- 17. 處理已檢查的異常
- 18. 在RxJava中處理檢查異常
- 19. 條件檢查與異常處理
- 20. CMD異常處理C/C++
- 21. 多態異常處理和編譯器警告
- 22. C++自制異常處理失敗
- 23. C#:異常處理 - 查找錯誤
- 24. 如何在Borland的禁用異常處理代碼C++編譯器5.5
- 25. c異常處理sql異常#
- 26. python異常與C++異常處理
- 27. 「未處理的檢查異常的拋出異常」在Java中
- 28. 打樁檢查異常:如何處理異常
- 29. Grails控制器中的異常處理
- 30. Spring-mvc控制器和異常處理
不可以,因爲標準的設計基本上是不可能的,因爲在編譯時不可能確切知道將調用哪些函數。 – 2009-11-30 14:38:06
找到主要功能。將所有內容放在try-catch塊中。沒有錯誤。 :)(我想知道如果在構造全局變量時拋出異常會發生什麼?) – UncleBens 2009-11-30 15:54:33