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

emk*_*y08 1 c++ exception-handling exception

如果未处理异常,在C++中是否有任何方法可以获得编译时错误或警告?例如,请考虑以下Java代码段:

public void f()
{
    g();  // <-- Java compiler reports "Unhandled exception" error here.
}

public void g() throws Exception
{
}
Run Code Online (Sandbox Code Playgroud)

g ++或MSVC可以做类似的事吗?或者是否有任何外部代码解析工具可以做到这一点?我想可以通过编程方式扩展Eclipse CDT的C++解析器来实现这一目标,但是......有更简单的解决方案吗?

CB *_*ley 6

简单地说,没有.C++异常规范与Java的异常规范具有不同的含义,现在它们已被弃用,因此您应该考虑尽可能避免使用它们.

在C++中,异常规范请求的检查仅在运行时强制执行.在C++中,如果函数违反了其异常规范,则会调用"意外"处理程序.调用可能从具有异常规范的函数中抛出任意异常的函数不是编译时错误.

ISO/IEC 14882:2011 15.4 [except.spec]/11:

实现不应仅仅因为执行时抛出或抛出包含函数不允许的异常而拒绝表达式.