C++异常处理程序的一个奇怪问题

use*_*404 0 c++ exception

我在C++中使用了标准的异常处理方法.哪个是try {}和catch {}阻止.在我的代码中,func1()会抛出异常,而func2是这样的:

bool func2()
{
    try{
       func1();
    }

    catch(myException& e)
    {
       cerr << "error!" << endl;
       return false;
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行我的代码时,会发生一件奇怪的事情.我从来没有达到抛出异常的代码,但是我总是在catch块中到达返回false的行(但是cerr <<从来没有到达行).然后函数继续返回true.我不知道原因是什么.任何人都可以帮我解决问题吗?非常感谢你!

Mar*_*som 7

如果您在编译器中使用任何优化标志(即非调试模式),则无法相信调试器会向您显示正确的执行行.你做了相互矛盾的陈述 - "return false"语句正在执行,但函数返回true.这是我能想到的唯一解释.