c++中未处理的异常检查
Unhandled exception check in C++
如果异常未处理,c++中是否有任何方法可以获得编译时错误或警告?例如,考虑以下Java代码片段:
public void f()
{
g(); // <-- Java compiler reports "Unhandled exception" error here.
}
public void g() throws Exception
{
}
g++或MSVC可以做类似的事情吗?或者是否有任何外部代码解析工具可以做到这一点?我认为可以通过编程方式扩展Eclipse CDT的c++解析器来实现这一点,但是……有没有更简单的解决方案?
很简单,没有。c++异常说明与Java异常说明的含义不同,它们现在已被弃用,因此您应该尽可能避免使用它们。
在c++中,异常规范要求的检查只在运行时强制执行。在c++中,如果一个函数违反了它的异常规范,就会调用"unexpected"处理程序。调用可能从带有异常说明的函数抛出任意异常的函数不是编译时错误。
ISO/IEC 14882:2011 15.4[除。规格]/11:
实现不能仅仅因为表达式在执行时抛出或可能抛出包含该表达式的函数不允许的异常而拒绝该表达式。
简短的回答:不。c++中没有受控异常。你可以尝试使用外部工具,但老实说,我从未见过有人这么做。
相关文章:
- valgrind-hellgrind与泄漏检查的结果不同
- C++模板来检查友元函数的存在
- 检查输入是否不是整数或数字
- 是否可以检查给定exception_ptr实例是否拥有某种类型的异常?
- 无法在谷歌测试中检查异常类型
- 调试器在 nullptr 检查期间引发 nullptr 异常
- Visual Studio检查了迭代器不抛出异常
- 首次机会异常设置检查列表视图中的状态
- C++:检查是否在没有外部库的情况下抛出了某个异常类型
- 浮点异常,即使在检查是否除以零后
- C++:在构造函数>中进行健全性检查时,我是否需要/是否可以使用异常处理?
- 使用try-Catch异常处理程序和if-else条件检查之间的区别
- 无异常的c++操作符重载错误检查
- 当数组出界时,是否通过异常安全检查
- 如何检查禁用异常的构造函数的失败
- 检查所有c++函数是否在一个程序中抛出异常的工具
- 是在传递给库函数之前检查值更好,还是捕获抛出的异常更好
- c++中未处理的异常检查
- c++断言函数,检查是否抛出异常
- 带有异常的c++流的错误检查