C++中的句柄错误

ZDNet软件频道 时间:2004-02-06 作者:ZDNet China |  我要评论()
本文关键词:cpptips
大多数的C++类库中,异常不是类的基本部分。为了让C++的异常处理和Java的水平相当,你需要在你的应用程序或者库中小心的设计异常处理。
本文译自Builder.com,未经许可请勿转载

Java中的最好的一件事情是彻底的使用异常并依存异常。使用异常你可以在句柄操作错误的时候获得一个安全可靠的方法。

不幸地是,大多数的C++类库中,异常不是类的基本部分。为了让C++的异常处理和Java的水平相当,你需要在你的应用程序或者库中小心的设计异常处理。

首先,你需要在你的设计文档中详细的定义出错处理。更多时候,出错处理是一个事后产生的想法。在你开始编写代码之前,你需要为每个函数制定异常规格说明。

一旦你知道你的函数是什么异常,你需要定义一个层次。注意,和Java不一样的是,任何在throw语句中都可以被thrown。但是使用基本的数据类型不允许任何分层次的扑捉结构,并且,我反对使用它们。

如果你使用一个类库,这个类库有自己的异常层次,你可以从那里开始。但是,通常你希望添加你自己的异常到层次中,如果你使用一个标准C++编译器,你可以从标准库中开始异常。

记住你通常catch一个异常并throw另外一个,因此,异常连锁是有益的。添加异常连锁和添加一个构造函数一样简单。它将使用异常的基本类。

混合异常和C的类型返回值错误是一个好的办法。如果可以的话,提炼C错误报告函数和你程序的其余部分的接口

   C++异常规格有一个普通的语法:

//Declaration
void foo() throw (IOException);
//definition
void foo() throw (IOException){
       //do something
}

   注意,声明和定义必须有同样的异常规格。不幸地是,C++异常规格和Java的异常规格不一样。C++版本的进程中的std::unexpected异常代替了Java中的编译错误。同样的C++异常规格默认throw任何异常。


文本作者Mike Owens是一名Allscripts Healthcare解决方案的软件工程师,他从事软件行业已逾八年。




责任编辑:李宁

欢迎评论投稿


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134