gpt4 book ai didi

c++ - C++ 中的异常处理 : Throwing a double when using "throw(int)"

转载 作者:可可西里 更新时间:2023-11-01 17:37:08 25 4
gpt4 key购买 nike

下面的程序总是输出“Error:double 10.2”。

我不明白为什么。根据我的说法,如果 fun1() 只允许抛出 int ,那么程序应该要么(1) 崩溃(2) 或者把double改成int然后throw。这意味着,输出应该是“Error:int 10”。然而,情况并非如此。谁能解释一下??

void fun1() throw (int)
{
cout<<"3";
throw 10.2;
cout<<"4";
}

int main()
{
try { fun1(); }
catch(int i) { cout<<"Error:int" <<i <<endl;}
catch(double i) { cout << "Error:double" << i << endl; }
cout << endl;
return 0;
}

最佳答案

您的编译器不符合标准。根据标准,您的程序应以调用 std::unexpected 结束。在让 double 异常转义 fun1 之后。
也就是说 - 不要使用异常规范。它们已被弃用且无用。

关于c++ - C++ 中的异常处理 : Throwing a double when using "throw(int)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17215367/

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