[发明专利]软件构件处理错误信息的方法有效

专利信息
申请号: 200610027060.8 申请日: 2006-05-30
公开(公告)号: CN101082878A 公开(公告)日: 2007-12-05
发明(设计)人: 陈榕;王晨辉;沈金 申请(专利权)人: 上海科泰世纪科技有限公司
主分类号: G06F11/36 分类号: G06F11/36
代理公司: 上海浦一知识产权代理有限公司 代理人: 顾继光
地址: 201203上海市浦东新区*** 国省代码: 上海;31
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 软件 构件 处理 错误信息 方法
【说明书】:

技术领域

发明涉及一种软件构件处理错误信息的方法,尤其涉及一种可避免客户程序调用用户构件过程中,产生错误号冲突的软件构件处理错误信息的方法。

背景技术

在软件构件技术中,构件对各种错误信息的处理方法与软件应用在错误处理上的方法不尽相同,首先应该意识到任何错误如果在构件里得不到妥善处理,都将影响调用该方法的客户端程序,因此客户端程序接受到的信息应该是明白无误的,又由于客户端程序并不知道构件的逻辑运行过程,所以显示错误信息必须反映失败的事务环境,再由客户端程序依此进行处理和解释。在目前的COM构件技术中,例如在COM构件技术中,除了IUnknown接口的AddRef和Release,其他方法都有一个HRESULT类型的返回值,用于表示方法调用的结果,当调用失败时,可返回一个错误号以使客户端程序明确其出错的原因,从而可进行相应的处理。如图1所示,该HRESULT值是一个32位的整型值,它包括了重要程度代码、设备代码和返回代码三个域,其中,最高位的重要程度代码表示调用是否成功。这种设计使得方法可以返回多个成功代码以及失败代码。HRESULT的低16位包含的就是方法调用的返回代码。中间的15位包含的是此类型及返回值起源的更详细的信息。对于中间的15位设备代码,在现有的COM技术规范中都有其固定的定义。

其中,除了当设备码为FACILITY_ITF之外,其余设备都由COM构件技术定义的返回代码。所有的设备码都是通用的,它们对任何人、在任何地方都是相同的。而FACILITY_ITF却是一个例外:它标识的是与返回此代码的接口特定相关的返回代码。

命名时,表示成功返回的代码在其名称前通常都有一个S_前缀,而表示失败返回的代码在其名称前的前缀则是E_。例如:S_OK、E_NOINTERFACE等。

对于构件开发者来说,如果COM构件定义的错误信息返回代码不能满足需要,那就得为某个接口的方法自定义一个返回值。根据微软规定的COM构件技术规范,首先,构件开发者自定义错误号时,设备代码必须是FACILITY_ITF,表示这个错误号与某接口关联在一起,然后定义一个错误码。其次,在自定义的返回代码的命名上,应该在名称前面加上构件或接口的名称,如当构件名称为FOO时,其错误号可命名为FOO_E_NOINTERFACE等。

自定义错误号,为构件开发者提供了方便,但是,虽然用FACILITY_ITF标记的返回值的含义与返回它的接口相关,但返回值本身却并不一定是唯一的,因为根据HRESULT的定义,只有216个可能的返回值,但是却有成千上万的开发人员在开发定义有他们自己错误号的COM构件。所以这些错误号均被标记为FACILITY_ITF。因此不同的构件接口将不同的含义赋予同一值不仅是可能的,而且几乎可以肯定会出现这种情况。

对于调用某个接口的客户程序,虽然错误号出现冲突的可能性并不一定会成为一个问题。例如,当客户程序知道它所调用的接口时,它也就知道此接口可能会返回的所有成功代码;客户程序也将知道大多数错误代码;并且对于那些客户程序不能识别的错误代码,都将有一个默认的错误处理。但是,当某个接口的调用者本身也是一个构件,并试图将所得到的成功或错误号传播给其他客户程序时,就可能会出现问题了。这是由于该调用者的客户程序无法理解这个返回值的意思,因为该返回值最初是由现有客户程序并不知道的那个客户返回的。

而且,对于开发人员自定义的错误号,COM构件技术规范中还有如下一些一般性的规则:

首先,不要将0x0000及0x01ff范围内的值作为返回代码。这些值是为COM所定义的FACILITY_ITF代码而保留的。只有遵循这一规则,才不致使用户自己定义的错误号与COM所定义的代码相混淆。

其次,不要传播FACILITY_ITF错误号。

再次,尽可能地使用通用的COM成功及错误代码。

还有,应避免定义自己的HRESULT,而是可以通过在函数中使用一个输出参数来代替。

发明内容

本发明要解决的技术问题是提供一种软件构件处理错误信息的方法,该方法可避免产生由于自定义错误号引起的错误号重复、冲突和错误地跨构件传递等问题,并且可明确地表达各种错误信息。

为解决上述技术问题,本发明是通过以下技术方案实现的:

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海科泰世纪科技有限公司,未经上海科泰世纪科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/200610027060.8/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top