强制C ++编译器检查异常处理

时间:2009-11-30 14:35:17

标签: c++ exception-handling

我想知道是否有一些编译器参数,最好是gcc(g ++),它将缺少try / catch块视为错误。这是java中的标准行为,我总是喜欢它。

3 个答案:

答案 0 :(得分:8)

由于Java中的已检查异常依赖于throw签名,因此您可以在SO this question中了解您不希望在C ++中使用throw函数签名的原因。

答案 1 :(得分:1)

嗯,使用异常规范通常是一个坏主意:http://cplusplus.co.il/2009/10/06/exception-specifications/

如果不使用这些,编译器基本上无法知道可能抛出哪个异常,因此无法做到这一点。

你可以做的是提供你自己的std :: terminate实现(通过调用std :: set_terminate())并处理未捕获的异常。

答案 2 :(得分:0)

在C ++中可以用异常做的一件事是在函数上使用异常规范。这并不会主动阻止未列出的异常从该函数中抛出,但它会使它们出错(并将它们全部映射到预定义的unexpected()

所以int f() throw ();是C ++,用于“将从函数f中引发的任何异常视为错误”。