我想知道是否有一些编译参数,最好在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