admin 管理员组文章数量: 1086019
2024年3月19日发(作者:jquery split)
C++中异常处理的语法 try catch throw
C++中异常处理的语法。
关键字
1、 try
2、 catch
3、 throw
其中关键字try表示定义一个受到监控、受到保护的程序代码块;关键字catch与try遥
相呼应,定义当try block(受监控的程序块)出现异常时,错误处理的程序模块,并且每个
catch block都带一个参数(类似于函数定义时的数那样),这个参数的数据类型用于异常对象
的数据类型进行匹配;而throw则是检测到一个异常错误发生后向外抛出一个异常事件,通
知对应的catch程序块执行对应的错误处理。
语法
1、还是给一个例子吧!如下:
int main()
{
cout << "In main." << endl;
//定义一个try block,它是用一对花括号{}所括起来的块作用域的代码块
try
{
cout << "在 try block 中, 准备抛出一个异常." << endl;
//这里抛出一个异常(其中异常对象的数据类型是int,值为1)
//由于在try block中的代码是受到监控保护的,所以抛出异常后,程序的
//控制流便转到随后的catch block中
throw 1;
cout << "在 try block 中, 由于前面抛出了一个异常,因此这里的代码是不会得以执行到的"
<< endl;
}
//这里必须相对应地,至少定义一个catch block,同样它也是用花括号括起来的
catch( int& value )
{
cout << "在 catch block 中, 处理异常错误。异常对象value的值为:"<< value << endl;
}
cout << "Back in main. Execution resumes here." << endl;
return 0;
}
2、语法很简单吧!的确如此。另外一个try block可以有多个对应的catch block,可为什
么要多个catch block呢?这是因为每个catch block匹配一种类型的异常错误对象的处理,多
个catch block呢就可以针对不同的异常错误类型分别处理。毕竟异常错误也是分级别的呀!
有致命的、有一般的、有警告的,甚至还有的只是事件通知。例子如下:
int main()
{
try
{
cout << "在 try block 中, 准备抛出一个int数据类型的异常." << endl;
throw 1;
cout << "在 try block 中, 准备抛出一个double数据类型的异常." << endl;
throw 0.5;
}
catch( int& value )
{
cout << "在 catch block 中, int数据类型处理异常错误。”<< endl;
}
catch( double& d_value )
{
cout << "在 catch block 中, double数据类型处理异常错误。”<< endl;
}
return 0;
}
3、一个函数中可以有多个trycatch结构块,例子如下:
int main()
{
try
{
cout << "在 try block 中, 准备抛出一个int数据类型的异常." << endl;
throw 1;
}
catch( int& value )
{
cout << "在 catch block 中, int数据类型处理异常错误。”<< endl;
}
//这里是二个trycatch结构块,当然也可以有第三、第四个,甚至更多
try
{
cout << "在 try block 中, 准备抛出一个double数据类型的异常." << endl;
throw 0.5;
}
catch( double& d_value )
{
cout << "在 catch block 中, double数据类型处理异常错误。”<< endl;
}
return 0;
}
版权声明:本文标题:C++中异常处理的语法 try catch throw 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1710785614a573025.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论