您的位置:首页 > 编程语言 > C语言/C++

C++ 异常 exception throw

2014-02-24 21:45 120 查看
之前很少用到C++的exception机制,看到C++ Primer的第6章,简要的介绍一下:

首先,C++ 的异常处理包括: throw表达式。如:

#include<iostream>
#include<stdexcept>

using namespace std;
int main()
{
int x;
while(cin >> x)
{
if (x == 0)
{
throw runtime_error("input is 0...");
return 1;
}
}
return 0;
}


一段很简单的代码,不停地读取标准输入,如遇到了 0 ,那么直接抛出异常,然后推出程序。

注意:runtime_error是C++标准异常类,其类定义为:

class runtime_error : public exception {
public:
explicit runtime_error (const string& what_arg);
};


上述的“input 0”串是构造函数的参数。

try...catch...

简单的例子来解释:

#include<iostream>
#include<stdexcept>

using namespace std;

void print(int x)
{
try
{
if(x == 0)
{
throw runtime_error("exception in print function...");
}
}
catch(runtime_error err){
cout << "catch in print function..." << err.what() << endl;
}
}

int main()
{
int x;
while(cin >> x)
{
try
{
if (x == 0)
{
print(x);
throw runtime_error("input is 0...");
//return 1;
}
}catch(runtime_error err){
cout << "catch in main..." << err.what() << endl;
return 1;
}
}
return 0;
}


在main函数中调用函数print,print中捕获的到了异常之后,找到其异常处理的过程是,首先在print中找是否有处理该类型的异常的catch语句,如果有,执行之;执行完之后,查看main函数是否有对应的异常处理,如果有,执行。。。如果一路找下来都没有的话,那么直接调用terminate类终止程序的运行即可。

上述程序的执行结果为:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息