c++中未处理的异常检查

Unhandled exception check in C++

本文关键字:异常 检查 未处理 c++      更新时间:2023-10-16

如果异常未处理,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++中没有受控异常。你可以尝试使用外部工具,但老实说,我从未见过有人这么做。