关于C++中<<异常处理中的构造与析构>>问题,刚学,不明白,特来求救

yangleiabc 2011-07-30 02:52:23

#include <iostream>

using namespace std;

class Exception
{
public:
Exception()
{
cout<<"执行构造函数..."<<endl;
}
~Exception()
{
cout<<"执行析构函数..."<<endl;
}
void Display()
{
cout<<"Exception类异常!";
}
};

void ExcpFun()
{
cout<<"在Excpfun函数中触发Exception类异常!"<<endl;
cout<<"========================3========================="<<endl;
throw Exception();
}


void main()
{
cout<<"进入main函数"<<endl;
Exception Excp;
try
{
cout<<"在try模块中,调用ExcpFun函数"<<endl;
ExcpFun();
}
catch(Exception E)
{
cout<<"=========================1========================"<<endl;
cout<<"在catch块中捕获到Exception类异常:"<<endl;
E.Display();
cout<<endl;
cout<<"=========================2========================"<<endl;
}
catch(char* str)
{
cout<<"捕获到其他类型异常:"<<str<<endl;
}
cout<<"异常已被处理!"<<endl;

}


运行结果:

进入main函数
执行构造函数...
在try模块中,调用ExcpFun函数
在Excpfun函数中触发Exception类异常!
========================3=========================
执行构造函数... //此处为何有构造,而又马上析构?

执行析构函数...
=========================1========================
在catch块中捕获到Exception类异常:
Exception类异常!
=========================2========================
执行析构函数... //此处为何有两次析构?
执行析构函数...
异常已被处理!
执行析构函数...
...全文
50 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2011-07-30
  • 打赏
  • 举报
回复
异常的资料你看得不够多。再找几篇看看就懂了。
不过,懂了也没啥实际价值。
google “C与C++中的异常处理”

65,198

社区成员

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

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