精華區beta C_and_CPP 關於我們 聯絡資訊
※ 引述《renderer (rendering)》之銘言: : 的確 exception 是一種介面/契約/承諾 : Java 的設計似乎很明瞭這一點 : 因此 exception specification 成為了 Java class method 定義的一部份먊: 如果一個 method 有 throw exception : Java compiler 會要求要為 method 加上 exception specification : 而呼叫這個 method 的 client 會被要求加上 try catch : 或者這個 client method 不 try catch 但要補上 exception specification : 有 compiler 來把關似乎滿好的 C++ 其實也可以像 Java 這樣,只是沒有強迫這麼做,不強迫的原因, 應該是為了效率考量。另外,不論 try catch 或 加上 exception sepcification 都挺麻煩的,如果強迫的話,可能沒人想 throw exception 了。 這是 C++ 的「零成本」原則,不為沒有用到的功能負出代價。程式不一定 會拋出異常,就算拋出異常也不一定要被處理。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.214.120
StubbornLin:我記得某本書上說過 Exception不是零成本 59.116.64.100 08/14
StubbornLin:就算沒用到 也一樣必需付出一點成本 59.116.64.100 08/14
StubbornLin:至於是哪本書 我忘記了 XD 59.116.64.100 08/14
FRAXIS:Exception的成本是在有spec的情況吧 140.119.162.51 08/14
AssistantR:一定有成本的啦, exception=處處可能發生jmp220.139.137.129 08/14
AssistantR:而且搞不好成本還不小勒 :p220.139.137.129 08/14