我已经创建了一个类来尝试异常:
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”字符串,这正常吗?如何避免这种情况?
try如果捕获异常,则将其视为已处理,并在/块末尾恢复执行catch。
如果您希望异常继续沿着链继续向上(如果未捕获,则可能导致程序停止),然后将 a 添加throw到catch:
catch(precExcp& e)
{
cerr << e.what() <<endl;
throw;
}
Run Code Online (Sandbox Code Playgroud)
如果您想在那里停止程序而不是向上传播异常或让执行恢复,您可以调用exit(或return在本例中,但只是因为您处于main)。
| 归档时间: |
|
| 查看次数: |
2223 次 |
| 最近记录: |