异常不会中断指令流

Ram*_*uri 2 c++

我已经创建了一个类来尝试异常:

class precExcp:exception
{
    public:
    virtual const char* what()
    {
        return "Precision must be positive";
    }
};
Run Code Online (Sandbox Code Playgroud)

问题是,当启动异常时,指令流不会停止。我不知道这是 C++ 默认行为。如果是,如果发现异常时想中断指令流该怎么办?这是我在 main 中所做的一个示例:

int main(int argc, char **argv)
{
    try
    {
        if(1)
            throw precExcp();
    }
    catch(precExcp& e)
    {
        cerr << e.what() <<endl;
    }
    cout << "hello" <<endl;
}
Run Code Online (Sandbox Code Playgroud)

屏幕上打印出“hello”字符串,这正常吗?如何避免这种情况?

Set*_*gie 5

try如果捕获异常,则将其视为已处理,并在/块末尾恢复执行catch

如果您希望异常继续沿着链继续向上(如果未捕获,则可能导致程序停止),然后将 a 添加throwcatch

catch(precExcp& e)
{
    cerr << e.what() <<endl;
    throw;
}
Run Code Online (Sandbox Code Playgroud)

如果您想在那里停止程序而不是向上传播异常或让执行恢复,您可以调用exit(或return在本例中,但只是因为您处于main)。