您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> 下面这段代码为何程序不能异常终止?已经在throw中阻止抛出任何异常了,应该异常终止,但程序还能正常运行和显示异常结果

下面这段代码为何程序不能异常终止?已经在throw中阻止抛出任何异常了,应该异常终止,但程序还能正常运行和显示异常结果

来源:网络整理     时间:2016/9/6 0:24:10     关键词:

关于网友提出的“ 下面这段代码为何程序不能异常终止?已经在throw中阻止抛出任何异常了,应该异常终止,但程序还能正常运行和显示异常结果”问题疑问,本网通过在网上对“ 下面这段代码为何程序不能异常终止?已经在throw中阻止抛出任何异常了,应该异常终止,但程序还能正常运行和显示异常结果”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 下面这段代码为何程序不能异常终止?已经在throw中阻止抛出任何异常了,应该异常终止,但程序还能正常运行和显示异常结果
描述:

void Xhandler(int test) throw()
{
if(test==0) throw test;
if(test==1) throw 'a';
if(test==2) throw 1.1;
}
int main()
{
cout<<"Start\n";
try{
Xhandler(1);
}
catch(int i){
cout<<"Integer\n";
}
catch(char c){
cout<<"Char\n";
}
catch(double d){
cout<<"Double\n";
}
cout<<"End";
return 0;
}

解决方案1:

因为你用的是 msvc ,它没有对 throw() 做出正确的处理。
使用 vs2015 的话,可以替换为 noexcept  。在被标记为 noexcept (包括 noexcept(true) )的函数内的未处理异常会导致 std::terminate 被调用。
g++ 或 clang++ 都能正确处理 throw() 。


以上介绍了“ 下面这段代码为何程序不能异常终止?已经在throw中阻止抛出任何异常了,应该异常终止,但程序还能正常运行和显示异常结果”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3761890.html

相关图片

相关文章