Robin Chow's C++ Blog

 

[导入]More Exceptional C++ 之 9

关于函数体 try 的几个要点:
  1. 构造函数 try 只能用来传递从基类或成员子对象的构造函数抛出的对象(或者做一些响应这些错误的其它操作),不能用作其它用途(比如释放资源)。
  2. 析构函数 try 没有什么实际用途,因为析构函数不应该抛出异常。
  3. 所有其它的函数 try 没有什么实际用途。一个一般的函数 try 不能抓取到函数体内的 try 所不能抓取到的异常。
  4. 记住在构造函数体内而不是在初始化列表中分配未被管理的资源(比如使用 new)。即,要么使用“获取资源就是初始化”,从而避免未被管理的资源,要么在构造函数体内获取资源。
  5. 总是在构造函数或析构函数体内释放未被管理的资源,而不是在它们的函数 try 里面。
  6. 如果一个构造函数有异常规格,那么它的异常规格必须包含该类的基类和成员子对象的所有可能抛出的异常。
  7. 使用 Pimpl 思想来保持类内部的“可选的部分”。如果一个成员对象的构造函数可能抛出异常而你不一定需要那个对象,就可以在类中仅仅保持一个指向该对象的指针。通过该指针是否为空来判断是否持有改对象。
  8. 最后重复一下:使用“资源分配就是初始化”而不是手动管理资源。

文章来源:http://my.donews.com/robinchow/2007/01/29/cagxxmzwktgtrdirlmuspfjuarcxkcumdbjb/

posted on 2007-10-23 20:47 Robin Chow 阅读(108) 评论(0)  编辑 收藏 引用


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


导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜