文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C++new失败后如何处理

C++new失败后如何处理

时间:2011-04-17  来源:hailong

兩個可能性: new 失敗會 throw bad_alloc, 或傳回 0.

這兩個可能性會導致兩個結果. 如果 new 拋 bad_alloc, 所有已經成功建構的物件 (如 base class, 其它成員物件) 都會解構. 尚未建構的物件不會建構. Caaa 物件也不會存在.

如果 new 傳回 0, 你會有一個完整的物件, 但其內部的成員資料的完整性是個問題 ('total' 不是 0, 但 'ptr' 是 0).

你可以在 initialization list 裡抓成員所拋的 exceptions:

  Caaa::Caaa(int num, int *p)
  try : total(num), ptr(new int[num])
  {
    // 正常運作的 body
  }
  catch (...)
  {
    // exception handler
  }

既使 catch-block 沒有 throw, 當跑到 constructor 的 catch-block 結束時, 原本的 exception 會自動重拋.

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载