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

c++ try catch

2015-11-27 16:25 453 查看
在c++中,可以直接抛出异常之后自己进行捕捉处理,如:(这样就可以在任何自己得到不想要的结果的时候进行中断,比如在进行数据库事务操作的时候,如果某一个语句返回SQL_ERROR则直接抛出异常,在catch块中进行事务回滚)

[html]
view plaincopyprint?

#include <iostream>

#include <exception>

using namespace std;
int main () {
try
{
throw 1;
throw "error";
}
catch(char *str)
{
cout <<
str <<
endl;
}
catch(int i)
{
cout <<
i <<
endl;
}
}

#include <iostream>
#include <exception>
using namespace std;
int main () {
try
{
throw 1;
throw "error";
}
catch(char *str)
{
cout << str << endl;
}
catch(int i)
{
cout << i << endl;
}
}


也可以自己定义异常类来进行处理:

[html]
view plaincopyprint?

#include <iostream>

#include <exception>

using namespace std;

//可以自己定义Exception
class myexception: public exception
{
virtual const char* what() const throw()
{
return "My exception happened";
}
}myex;

int main () {
try
{
if(true) //如果,则抛出异常;
throw myex;
}
catch (exception& e)
{
cout <<
e.what() <<
endl;
}
return 0;
}

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

//可以自己定义Exception
class myexception: public exception
{
virtual const char* what() const throw()
{
return "My exception happened";
}
}myex;

int main () {
try
{
if(true)    //如果,则抛出异常;
throw myex;
}
catch (exception& e)
{
cout << e.what() << endl;
}
return 0;
}


同时也可以使用标准异常类进行处理:

[html]
view plaincopyprint?

#include <iostream>

#include <exception>

using namespace std;

int main () {
try
{
int* myarray= new int[100000];

}
catch (exception& e)
{
cout << "Standard exception: "
<< e.what()
<< endl;

}
return 0;
}

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

int main () {
try
{
int* myarray= new int[100000];
}
catch (exception& e)
{
cout << "Standard exception: " << e.what() << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: