抛出异常会发生什么?

hel*_*rld 9 c++ exception

我有一些技术问题.在这个功能:

string report() const {
    if(list.begin() == list.end()){
        throw "not good";
    }
    //do something
}
Run Code Online (Sandbox Code Playgroud)

如果我抛出异常程序正在发生什么?我的功能会终止还是会进一步运行?如果它终止,它将返回什么价值?

Cog*_*eel 13

如果抛出异常,则所有函数将退出到找到try...catch具有匹配catch类型的块的位置.如果未在try块中调用函数,程序将以未处理的异常退出.

有关详细信息,请查看https://isocpp.org/wiki/faq/exceptions.


Adr*_*scu 6

它基本上会在堆栈中找到异常处理程序; 如果它没有找到一个到达堆栈的末尾,你的程序将崩溃.如果它确实找到了一个,它将向上回放堆栈,运行处理程序,并在处理程序块之后继续执行代码,无论你的堆栈是多远.

您可以通过Google获得有关C++异常处理机制的各种详细信息.这是一个良好的开端.