Re: [問題] 例外處理
※ 引述《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 了
通常只用在非常嚴重的錯誤
Exception 在 C++ 中的缺點
一是 C++ 沒有 GC
所以很難保證所有資源都會被正確回收
二是它會造成奇襲的效果
有可能會傳播到 callback funtion 外部(而 host 可能是用 C 寫成)
或是跨 module 傳播
但是它有前二者的優點
無法被悶聲不響的忽略
被忽略就會 abort
--
自High筆記(半荒廢)
http://legnaleurc.blogspot.com/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.127.21.174
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章