Re: [問題] 例外處理

看板C_and_CPP (C/C++)作者 (火神)時間16年前 (2009/05/30 20:02), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串3/4 (看更多)
※ 引述《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 了 : 通常只用在非常嚴重的錯誤 這個本公司有很多人用在不怎麼樣的錯誤上 造成的後果很... Horrible : Exception 在 C++ 中的缺點 : 一是 C++ 沒有 GC : 所以很難保證所有資源都會被正確回收 : 二是它會造成奇襲的效果 推奇襲... lol : 有可能會傳播到 callback funtion 外部(而 host 可能是用 C 寫成) : 或是跨 module 傳播 : 但是它有前二者的優點 : 無法被悶聲不響的忽略 : 被忽略就會 abort assertion 也無法被忽視... ||| 所以我的建議是使用 error code 但怎麼使用又是一門藝術了... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.73.233.180 ※ 編輯: Ebergies 來自: 203.73.233.180 (05/30 20:07)

05/30 21:02, , 1F
但是 assert 無法被挽救 :P
05/30 21:02, 1F

05/30 21:03, , 2F
真的是程式完全無法執行下去時才 assert
05/30 21:03, 2F

09/08 12:26, , 3F
吃飽太閒查到自己的文章, 我現在偏好 Exception LOL
09/08 12:26, 3F
文章代碼(AID): #1A8I1IlG (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 4 篇):
文章代碼(AID): #1A8I1IlG (C_and_CPP)