如何处理结构类型的异常(转自《21天学通C++》)

weihuaswar 2009-02-05 02:44:04
由于类与结构有相似性,对于结构类型的异常处理也有些需要读者注意的地方。主要在于throw语句中的表达式类型,一般使用结构类型。
【范例20-5】处理结构类型的异常。该范例包含结构类型进行异常处理时,需要注意一些事项,代码如代码清单20-5所示。
代码清单20-5
1 #include<iostream.h>
2 struct aircraft //定义结构体
3 {
4 char *aircrafttype; //定义结构体成员
5 float len;
6 };
7 void myfuc() //定义函数
8 {
9 aircraft a; //定义结构体变量
10 a.aircrafttype="queen"; //结构体变量初始化
11 a.len=125;
12 throw a; //抛出异常
13 }
14 void main()
15 {
16 try //定义异常
17 {
18 myfuc(); //调用函数
19 }
20 catch(aircraft b) //定义异常的处理,
//参数为结构体类型
21 {
22 cout<<"aircraft type is:"<<b. aircrafttype<<"\n"; //输出
23 }
24 }
【运行结果】在Visual C++中新建一个【C++ Source File】文件,输入上述的代码,编译无误后运行。
【范例解析】读者可以看出,该范例与其他范例不同点在于其是结构体数据类型。在上述代码的第20行使用catch语句定义异常处理语句时,其参数为结构类型。
...全文
127 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2009-02-19
  • 打赏
  • 举报
回复
class is a type, also struct is a type, what you throw is just a object of some type, just so so...
weihuaswar 2009-02-19
  • 打赏
  • 举报
回复
楼上的有什么好的见解吗?
tangshuiling 2009-02-19
  • 打赏
  • 举报
回复

异常处理是个很繁杂的体系,绝非三言两语能道的明,<<21天学通C++>>这本书只是简单的介绍了异常机制的皮毛,由此,
如需深入学习c++异常机制,还是趁早换本好点的书本
UndefinedCoder 2009-02-19
  • 打赏
  • 举报
回复
既然21天不能掌握就别叫21天学通**。你滴明白?
hemiya 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhouzuoji 的回复:]
说什么**天学通**的,都应该扔了。
[/Quote]
你知道这本书多少页不?
没看过这本书的别说话,别光看名.
要是入门就看这本书,21天你就掌握这本书给你的知识,都算厉害的.
UndefinedCoder 2009-02-19
  • 打赏
  • 举报
回复
说什么**天学通**的,都应该扔了。
Vegertar 2009-02-05
  • 打赏
  • 举报
回复
《21天学通C++》!!!!
这本书楼主应该扔了....
deerwin1986 2009-02-05
  • 打赏
  • 举报
回复
和类类型有什么区别呢...
除了访问标号就没了...
叶落寒山 2009-02-05
  • 打赏
  • 举报
回复
顶一个

struct aircraft
{
char *aircrafttype;
float len;
};

void myfuc()
{
aircraft a;

a.aircrafttype="queen";
a.len=125;
throw a; //抛出异常
}

void main()
{
try
{
myfuc(); // 调用函数
}
catch(aircraft b) // 定义异常的处理,参数为结构体类型
{
cout <<"aircraft type is:" <<b. aircrafttype <<"\n"; //输出
}
}
waizqfor 2009-02-05
  • 打赏
  • 举报
回复
UP 学习!~

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧