gpt4 book ai didi

c++ - 异常处理

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:34:53 27 4
gpt4 key购买 nike

#include <iostream>  
using namespace std;
#include <exception>

void dis()
{
cout<<"terminate disabled "<< endl;
}

void display() throw(int,double)
{
if(0)
throw int();
if(0)
throw double();
if(1)
throw string();
}

int main()
{
set_unexpected(dis);
try
{
display();
}
catch(int)
{
cout<<"int "<< endl;
}
catch(double)
{
cout<<"double "<< endl;
}
catch(string)
{
cout<<"string "<< endl;
}

system("pause");
return 0;
}

现在输出是

terminate disabled

然后程序终止

但是我写的时候不是set_unexpected

set_terminate(dis);

输出是

terminate disabled  
terminate disabled

为什么会出现这种差异?

最佳答案

因此,您的原始输出是什么并不完全清楚。我尽力清理它,但你的引号标签让它变得不明显。

在您的代码中,如果您使用 set_unexpected(dis),您应该看到:

terminate disabled

在您的代码中,如果您使用 set_terminate(dis),您应该看到:

terminate disabled

在您的代码中,如果您同时使用 set_unexpected(dis)set_terminate(dis),您应该看到:

terminate disabled
terminate disabled

解决这个问题的一种方法是将 dis throw 0 作为最后一行。这将允许您将您的异常转换为您的函数声称它将抛出的东西。

关于c++ - 异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6416038/

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