当忘记捕获异常时,如何强制编译器生成错误或警告

时间:2011-12-08 09:12:53

标签: c++ exception

如果忘记捕获异常,它将返回运行时或由定义的异常处理程序函数处理。 或者我可以在try catch中将代码包装在main中。两者都会以合适的方式处理异常。

但是我想在早期发现这种情况,有没有办法做到这一点。

3 个答案:

答案 0 :(得分:2)

C ++(谢天谢地)不需要函数来宣告他们可能抛出的异常。因此,通常,任何函数都可以抛出任何东西。你不知道,你的编译器也不知道。

因此,你必须自己去追踪从哪里被捕获的异常,以及它们被捕获的地方。

答案 1 :(得分:0)

C ++不支持Java风格的限制性异常声明,并且由于多种原因无法实现。您的编译器不能也不会警告您未捕获的异常。 C ++ throw()规范用于不同的目的(或者说,目前根本没有任何目的)。

标准解决方案是确保所有异常都来自stdexcept类,并在适当的位置捕获std::exceptionstd::runtime_error。这通常意味着一个非常高级的地方,例如激活动作的控制器功能。

答案 2 :(得分:0)

  

但是我想在早期发现这种情况,有没有办法做到这一点。

如果您想在本地处理错误,则不应使用例外。

相关问题