c++异常处理

来源:百度知道 编辑:UC知道 时间:2024/05/26 07:13:53
#include <iostream>
#include <string>
#include <stdexcept>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
try
{
if(b==0) throw;
float c=a/b;
}
catch(...)
{
cout<<"b can't be zero"<<endl;
}
cout<<a<<endl;
system("pause");
return 0;
}

运行以上代码,当输入b=0时,系统会跳出对话框说有错误,怎么可能还显示“b输入错误”的提示啊?谢谢

throw中没有包括表达式,表示不处理这个异常。继续运行的话,除数为0了,当然会出错。 可以改成throw(b);

编译时把把/EHsc换成/EHa 或者用__try __except

默认C++ 异常处理机制是捕捉不到硬件异常的

---

看错了... throw必须throw数据,否则没办法catch。编译用/EHa的话

try
{
float c=a/b;
}
catch(...)
{
cout<<"b can't be zero"<<endl;
}
直接这样就可以了

1、catch(...)基本可以截获所有抛出的异常,但只不过是不知道异常类型而已。
2、因为,throw后面没有写异常类型,所以不会被catch住。如果变为throw 0,就可以被catch截获到了。这也算是1的前提吧,
呵呵

因为你没有声明throw和catch的异常类型,所以catch的时候捕捉不到

不会跳出对话框啊