金庆的专栏

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  423 随笔 :: 0 文章 :: 454 评论 :: 0 Trackbacks
一个模块如何处理异常?

最理想,最好的用模块是没有异常,保证操作如预想的结果一致。

当操作无法成功完时,必然会产生错误,或异常。
一个是返回错误码,一个是抛出异常。

错误一般是立即处理,不然就是忽略错误。一般不会保存错误,然后统一处理。
异常的优点是可以处理,也可以继续抛出,由更上层进行统一处理。

可以抛出异常大大简化了库的开发者,碰到非正常情况不能外理了,就抛出异常。
这其实是将错误处理交给了库调用者。

对于抛异常的函数,头疼的是一般无法知道它的所有异常,无法精确处理其所有异常,
只能针对个别异常进行处理。
因为该函数一般只能知道自己抛什么异常,但不能确定其调用的函数会抛什么异常。
一般函数声明中的异常指示总是不存在的。
如果对这样的函数来一个try/except(...)接所有错误,那么异常就退化为错误处理。

而返回错误总是确定的,返回哪些错误号是必须明确的。
对于本函数所调用的函数的错误总是已经处理了,而不是像异常那样直接抛出。

理想的库是两者都要,如STL的iostream库,可以抛异常,也可以查询是否错误。
std::iostream默认是不抛异常。

(转载请注明来源于金庆的专栏)


posted on 2007-08-13 11:43 金庆 阅读(779) 评论(0)  编辑 收藏 引用 所属分类: 1. C/C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理