链接例外,捕捉bug

ZDNet软件频道 时间:2002-11-26 作者:BUILDER.COM |  我要评论()
本文关键词:
当处理例外时,一般是先捕获例外,然后要么处理它、要么抛弃另一个例外。

当处理例外时,一般是先捕获例外,然后要么处理它、要么抛弃另一个例外。问题是如果抛弃另一个例外,你就会丢失原先的错误信息。

编程者主要考链接例外来帮助捕捉bug。也就是说,你在一个较高的级次上捕获到错误,然后如果你要处理它,你就记录它。当你检查记录时,就会发现错误发生的真正原因,如果你不链接错误,你很可能做不到这一点。

链接例外的另一个用途就是你可以显示用户友好错误(如显示错误信息,“不能载入员工表。请确认你有访问员工表的权限,然后重试。”)。

你将学会一种简单的链接例外的机制,它可能是一个其它的例外或者一个字符串。当你调用一个返回错误码的函数时,即为后者。你可以把错误码转换为一个字符串,然后把该字符串传递给已链接的例外。

实现可链接的例外

  • ChainExceptionBase< your_class >中导出your_class(你的类名)。为了可以继承一个已经从ChainExceptionBase导出的类,你可以这样导出你的类:ChainExceptionDerived< your_class, base_class>。
  • 你可以通过定义你自己错误类型的方式来重载GetDescription()。(你必须重载GetDescription(),因为你将记录它并把它显示给用户。)

用法

  • 为了抛弃一个已链接的例外,你可以这样ChainException( 新例外).chain(原例外) 。原例外可以是一个已链接的例外、std::exception、或者一个字符串(由函数返回的错误码所生成的字符串)。
  • GetDescription()将会返回例外的描述,而不管嵌套(nested)例外。
  • GetNestedDescription()将会返回该例外以及嵌套例外的描述。

你可以在这儿下载Zip文件,它包含了一个例子。



责任编辑:炒饭

欢迎评论或投稿


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