gpt4 book ai didi

c++ - 异常不会中断指令流

转载 作者:行者123 更新时间:2023-11-30 00:57:02 24 4
gpt4 key购买 nike

我做了一个类来尝试异常:

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

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

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

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

最佳答案

如果您捕获到一个异常,则认为它已被处理并在 try/catch block 的末尾恢复执行。

如果您希望异常在链上继续向上(如果未被捕获则可能导致程序停止),则将 throw 添加到 catch :

catch(precExcp& e)
{
cerr << e.what() <<endl;
throw;
}

如果你想在那里暂停程序而不是向上传播异常或让执行恢复,你可以调用 exit(或 return 在这种情况下,但仅因为你在 main 中)。

关于c++ - 异常不会中断指令流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9154228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com