手机分类
  导航: 电脑时代在线 · 程序设计 · C++语言 · BCBC++基础
有问题吗?看 疑难解答 电脑术语

Win32下地结构异常 B

 
硬件盘点
手机推荐
 
『Win32下地结构异常 B』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 更新时间:2005-7-12 
8.2.4 在C++中混用结构异常
在C++程序中混用结构异常时需要了解几项内容。首先,尽管C++Builder用Win32结构异常实现C++异常,C++异常对__except块来说仍时透明的。一个try块后可跟随一个except块或至少一个catch块。若试图混用二者会产生一个编译错误。需要处理两种类型异常的代码应该简单地在两个try块内嵌套:


函数throw()规范不会影响程序关于Win32异常的行为。另外,未处理的异常最后由操作系统处理(若调试器不首先处理它),不像C++程序那样调用terminate()。任何使用-xd编译器选项(缺省打开)编译的程序块将调用所有“自动”存储的对象的析构函数。栈打开操作从异常发生点到异常被捕捉点间发生。
C++程序中基于C的异常示例



8.2.5 定义异常
同一个程序内引发并处理Win32异常通常不太合适:C++异常能更好地做相同的工作,可移植性更好,并且使用更简单的语法。Win32异常确实有优点,然而,可处理它们的组件可能无法用同样的C++编译器编译。
第一步是定义异常。异常是下列格式的一个32位的整数(从位0开始),见表8-3:


除了定义异常的代码,还要决定异常是否包括附加的信息(可从异常记录中访问过滤器/处理程序)。在异常代码中加入附加的参数没有常规的方法。参见Win32帮助(在C++Builder联机帮助中)可获得更多信息。

8.2.6 引发异常
Win32异常由调用RaiseException()引发,声明如下:


其中:
点击放大

8.2.7 终止块
结构异常处理模型支持“终止块”,在被保护块正常退出后执行或经由异常。C++Builder编译器在C中以下列语法支持它:


终止块可由C++扩展支持,可在__finally块中处理清理程序:


下例说明终止块:



C++代码也能通过创建局部对象处理终止块,这些对象在范围退出时调用析构函数。由于C++Builder结构异常支持析构清理,这使得程序可以不用考虑异常的类型。
注意 有一个需要担心的情况,当异常被引发并没有处理程序时。对于C++异常,C++Builder编译器为局部对象调用析构函数(不要求由语言定义),而未处理的Win32异常,析构清理不发生。  


如果您有什么疑问,可以至论坛提出或者解答他人的疑问   返回页面顶部

】【关闭窗口
·上一篇教程:
·下一篇教程:
·导航: 电脑时代在线 · 程序设计 · C++语言 · BCBC++基础
相关文章
 
搞笑自拍|图片故事|美女图库|体坛宝贝|明星爆料|世界奇观|风光摄影|历史回忆|大千世界
Photshop超炫图片
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部  
网站文本地图
  版权所有:电脑时代在线 2005-2007 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright © 2005-2007 www.PCvz.com online services. all rights reserved. 蜀ICP备05015578
Template designed by LaoJiang. Optimized for 1024x768 to Firefox,Opera and MS-IE. Site powered by EQL.
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光