考试网 >> IT认证 >> 水平 >> 软件指导 >> C++中catch(…)如何使用

C++中catch(…)如何使用

发布时间:2006-06-28 05:18     点击:
分页:上一页  1 2 3 [4] 5  下一页

void Func()

{

try

{

// 这里的程序代码完成真正复杂的计算工作,这些代码在执行过程中

// 有可能抛出DataType1、DataType2和DataType3类型的异常对象。

}

catch(DataType1& d1)

{

}

catch(DataType2& d2)

{

}

catch(DataType3& d3)

{

}

// 注意上面try block中可能抛出的DataType1、DataType2和DataType3三

// 种类型的异常对象在前面都已经有对应的catch block来处理。但为什么

// 还要在最后再定义一个catch(…) block呢?这就是为了有更好的安全性和

// 可靠性,避免上面的try block抛出了其它未考虑到的异常对象时导致的程

// 序出现意外崩溃的严重后果,而且这在用VC开发的系统上更特别有效,因

// 为catch(…)能捕获系统出现的异常,而系统异常往往令程序员头痛了,现

// 在系统一般都比较复杂,而且由很多人共同开发,一不小心就会导致一个

// 指针变量指向了其它非法区域,结果意外灾难不幸发生了。catch(…)为这种

// 潜在的隐患提供了一种有效的补救措施。

catch(…)



}

}

  还有,特别是VC程序员为了使开发的系统有更好的可靠性,往往在应用程序的入口函数中(如MFC框架的开发环境下CXXXApp::InitInstance())和工作线程的入口函数中加上一个顶层的trycatch块,并且使用catch(…)来捕获一切所有的异常,如下:

BOOL CXXXApp::InitInstance()

{

if (!AfxSocketInit())

{

AfxMessageBox(IDP_SOCKETS_INIT_FAILED);

return FALSE;

}

AfxEnableControlContainer();

// Standard initialization

// If you are not using these features and wish to reduce the size
分页:上一页  1 2 3 [4] 5  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有