2011年1月3日 星期一

例外處理

作者: Ebergies (火神) 看板: C_and_CPP
標題: Re: [問題] 例外處理
時間: Sat May 30 20:02:25 2009

※ 引述《legnaleurc (CA)》之銘言:
: ※ 引述《os653 (allstar)》之銘言:
: : 其他常見的方法好像就 return error code 跟 throw exception
: : 可是這兩種方法的問題也實在蠻多的
: : 所以想請有經驗的人解說一下,一般大程式的處理方式是什麼


: C++的分類大概是三種
: 1. error codes
: 2. assertions
: 3. exceptions
: : 我個人是傾向 error code 多一些啦,畢竟 exception 很難寫
: 基本上是看狀況,在 module 內部大部分是推薦 exception
: 不過也有的 coding standard 是禁止使用 exception (比方說Google)
: error code 缺點就是很容易被忽略,且不能用在有固定簽名的地方
: (EX: Constructors, operators)
: 但是相容度最高,一般建議是用在 module 介面上
: assertion 基本上是一旦發生整個程式就 bye 了
: 通常只用在非常嚴重的錯誤

這個本公司有很多人用在不怎麼樣的錯誤上

造成的後果很... Horiible

: Exception 在 C++ 中的缺點
: 一是 C++ 沒有 GC
: 所以很難保證所有資源都會被正確回收
: 二是它會造成奇襲的效果

推奇襲... lol

: 有可能會傳播到 callback funtion 外部(而 host 可能是用 C 寫成)
: 或是跨 module 傳播
: 但是它有前二者的優點
: 無法被悶聲不響的忽略
: 被忽略就會 abort

assertion 也無法被忽視... |||

所以我的建議是使用 error code

但怎麼使用又是一門藝術了...

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.73.233.180

沒有留言:

張貼留言

您好.本資料庫並非第一手資料.如果你有對文章作者的詢問,意見與需求,請自行找尋文章作者並提供意見,謝謝.