作者gocpp (cpp)
看板C_and_CPP
標題Re: [疑惑] C++ Exception
時間Sun Aug 14 01:53:05 2005
※ 引述《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