- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第12章错误处理.PDF
第 12章 错误处理
第 1 页 共 6 页
目录
1. 参考3
2. 风格约定3
3. 术语与定义3
4. 符号3
5. 目标与范围3
6. 概述3
7. 错误处理方式3
8. 实现错误处理4
9. 应用6
第 2 页 共 6 页
1. 参考
2. 风格约定
风格(示例) 意义
5号+宋体(示例) 全文(中文)的正常颜色
5号+Lucida Sans Typewriter (Example) 全文(英文)的正常颜色
5号+Lucida Sans Typewriter+紫色(Example) 接口/类名称或源代码
3. 术语与定义
MOSES - MOSES 的Code Name
V12 DOM - MOSES 插件开发的基础组件,为插件开发提供API
灰版-应用程序无任何文档存在
开版-应用程序已打开一个或者多个文档
4. 符号
{$SDK} - SDK 的安装位置
{$INSTALL} - MOSES 的安装位置
5. 目标与范围
了解DOM 的错误处理方式
6. 概述
对于一个应用程序来说,处理API 调用失败的方法有两种,一种是捕获API 抛出
的异常,另一种是获知API 返回的错误代码。DOM 的错误处理机制综合考虑了上述两
种实现的优缺点,采用了一种混合的方式来进行处理。
7. 错误处理方式
7.1. 异常处理
为了保证引用程序的鲁棒性以及可调试性,异常处理对于应用程序的设计非常重
要。Moses 代码采用C++编写,而C++并没有提供一种非常安全、有效的机制来解决
第 3 页 共 6 页
异常处理。虽然结构性异常处理提供了一种很好的机制,但很遗憾的是,结构性异常很
容易导致代码的腐烂。当然,还有最大的一个问题是,Moses 在最初的设计的时候并
没有考虑异常处理。
基于以上三点,在DOM 使用C++和结构化异常都是不太实际的。
7.2.错误代码
用这种方式进行错误处理,很不优雅,容易导致代码腐烂。基于此,DOM 不考虑采
用这种方式进行实现。
7.3.DOM 的方式
DOM 综合了上述两种错误处理方式,基于下面的假设:插件调用某个API 的时候,
一般都只关心调用是否成功,而不会太关心调用返回的错误细节。
所以 DOM 异常处理采用了一种混合的方式,即引入了异常的概念,但是异常类都
是对API 调用错误细节的包装,没有异常抛出的过程,而是以异常事件的方式告诉插
件调用失败或者应用程序出现了某些警告,而让插件自己来选择性地处理“抛出“的异
常。
8. 实现错误处理
8.1. 概述
异常”抛出”类实现了 Iv_DOMTracer,而插件异常 “处理”类都实现了接口
Iv_DOMTraceListener。插件通过调用Iv_DOMTracer:: GetListeners 方法获取
到插件异常处理类的集合对象,然后插件可以将自己的异常处理类(实现了接口
Iv_DOMTraceListener)加入到这个集合中。DOM 在异常处理发生的时候就会调用
Iv_DOMTracer:: Publish 方法将这个异常 “抛出”给插件。插件如果想要获取到最
近发生的异常可以调用Iv_DOMTracer::GetLastException。
8.2.异常类
DOM 中提供的异常类可分为两类,一类是由于API 调用引起的不可忽略的异常,一类
属于MOSES 警告,属于可原谅(IgnorableException)的异常。
下图列出了DOM 提供了异常类的继承层次。
文档评论(0)