社区
C语言
帖子详情
哪位可以详尽地解释一下抛出异常时,开始的所谓"stack unwinding"(堆栈展开)过程!
aileen_long
2002-09-18 11:44:08
描述详细,解释清楚者拿分。
...全文
101
9
打赏
收藏
哪位可以详尽地解释一下抛出异常时,开始的所谓"stack unwinding"(堆栈展开)过程!
描述详细,解释清楚者拿分。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chinaeagle
2002-09-28
打赏
举报
回复
还是 jinfeng_wang(G-G-S,D-D-U)讲的明白
liubear
2002-09-27
打赏
举报
回复
来占个座位。
发个言吧。
当一个异常被抛出时,为了寻找能处理该异常的catch子句,需要从抛出异常的函数内开始,向上通过嵌套的函数调用链,直到找到该异常的catch子句为上去。这个过程被称作栈展开(stack unwinding).
在栈展开期间,随着函数调用链在catch子句的查找期间退出,每个函数执行的动作也被立即结束。在栈展开期间,由于栈被展开,每次一个复合语句或语句块退出时,如果在退出的块中有某个局部对象是类类型的,则在复合语句或函数退出时,栈展开过程将自动调用该对象的析构函数。
这样的话,如果一个资源被实现为一个类,并且"要求获得资源的动作"被封装在类的构造函数中,"释放资源的动作"被封装在类的析构函数中,那么一个函数带着未处理的异常退出时,函数中这种类类型的局部对象将被自动销毁。
熊主任
2002-09-27
打赏
举报
回复
我的一些理解
try
{
}
catch(...)
{
}
可以理解成函数,在try内有异常抛出后,清理栈内变量,但是有个问题,会早成内存泄漏,如果想避免的话,用个类把指针包起来,这样析构的时候回收这块内存就可以了。
waterstony
2002-09-27
打赏
举报
回复
假设函数B调用函数A
一个函数(A)内部抛出异常,如果这个函数(A)本身没有catch,那么这个异常会继续抛出到调用这个函数(A)的另一函数(B)当中。在异常继续抛出之前,函数A中的所有内部变量都要析构(从栈中释放)。如果B仍然没有catch这个异常,该异常继续抛出,B所有内部变量析构。一直到最外面(由系统catch调用abort)或者有某个函数catch了该异常。
一点浅见。
回炉重造,学习编程中。。。
2002-09-26
打赏
举报
回复
我来学习一下
aileen_long
2002-09-26
打赏
举报
回复
老师在吗?
liubear
2002-09-18
打赏
举报
回复
也占个座位吧。
C++ Primer中有一章也讲了异常,
cwanter
2002-09-18
打赏
举报
回复
google上能搜到不少啊!
cwanter
2002-09-18
打赏
举报
回复
这觉得你这个帖不可能自己删了,那就占个座位听听课吧:)
java进阶教程elastic
stack
从入门到实践
Elastic
Stack
是一系列开源产品的合集,包括 Elasticsearch、Kibana、Logstash 以及 Beats 等,能够安全可靠地获取任何来源、任何格式的数据,并且能够实
时
地对数据进行搜索、分析和可视化。其中,Logstash和Beats...
异常(C++)
程序在某处
抛出异常
类型的对象,在另外的地方捕获并处理这些出现的问题。可以根据小组分为不同的子类,这些子类都继承自同一个父类。最基础的异常类至少需要包含错误编号和错误描述两个成员变量,甚至还可以包含当前...
【C++ 接口设计】C++ 如何在
抛出异常
还是错误码之间权衡?
我们面临着一个关键的选择:是使用异常(Exception)还是错误码(Error Code)来处理和传递错误?这不仅是一个技术性的决策,更触及到程序员的心理和情感层面。在这一章节中,我们将探讨这个问题的重要性,并为接...
Exception和Error有什么区别?
在面试
过程
中,面试官往往会针对这些细节进行进一步的询问。例如,他们可能会问到你对哪些特定的Error、Exception或RuntimeException有所了解?为此,我精心绘制了一个简洁的类图,并列举了一些典型的例子,供你参考...
debugger位置不对_详解JavaScript的BUG和错误
如果一个程序是思想的结晶,你可以粗略地将错误分为因为思想混乱引起的错误,以及思想转换为代码
时
引入的错误。 前者通常比后者更难诊断和修复。语言计算机能够自动地向我们指出许多错误,如果它足够了解我们正在...
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章