看板 C_and_CPP 關於我們 聯絡資訊
try catch 會影響performance do/while(false) 並不是非常直覺 也會增加縮排. 又如果後來的維護者在do/while裡面放個return, 那clean up code就沒跑到了.. 我的建議是把 if (!succeeded(ret)) {printf(s); return ret;} 弄成macro 因為裡面直接造成函式回傳(early return) 因此就沒有多餘的縮排 至於resource (eg. critical section) clean up. 請善用C++ destrcutor會在離開時被喚起的特性 多用auto_ptr, shared_ptr, CComPtr這些東西.. code會變得很簡單易讀, 一眼就可以清楚看到流程 而把cleanup, error handling code 放到其他地方去 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.240.226.174
legnaleurc:exception 會影響到的 performance 很有限 01/08 00:41
legnaleurc:很多人討厭它的點不是效率, 而是它會奇襲作業系統 01/08 00:42
tomap41017:樓上可以舉個實例嗎?感謝!! 01/08 00:56
POSIX:奇襲 o_O" 01/08 01:44
legnaleurc:C++和Java不一樣,看不出來函式到底會丟出什麼樣的 01/08 01:48
legnaleurc:exception,而如果在某條thread沒catch到的話,某個程式 01/08 01:48
legnaleurc:會直接about,不單只有那條thread會受到影響 01/08 01:49
legnaleurc:s/某個程式/整個程式/ 01/08 01:50
legnaleurc:另外,如果不同的module間的ABI有微妙的差異時,module 01/08 01:51
legnaleurc:間的exception傳播可能會失敗 ... C++在可攜性上很GY 01/08 01:52
legnaleurc:基本上這個函式會丟出什麼exception是需要文件去說明 01/08 01:57
adxis:void function() throw exception ? 01/08 04:27
wowtiger:有限? 你知道 C++ exception 在一個 function 動了什麼? 01/08 12:06
wowtiger:光他在每個 function 前後加了不少 exception 的 code 01/08 12:07
wowtiger:就算不會 throw exception 也需要 register exception .. 01/08 12:08
wowtiger:try-catch-throw 根本只是 coding 好看而已 01/08 12:09
wowtiger:除非他必要 不然沒有需要使用 你可以看 EA STL 就知道了 01/08 12:10
littleshan:coding好看很重要呢 尤其是function自已有return value 01/08 14:45
littleshan:這時候還用 error code 會崩潰的 01/08 14:46
loveme00835:code 的第一印象很重要... 01/08 15:22
legnaleurc:照你的講法, C++ 根本就是個錯誤, 你應該用 C 才對 01/08 15:28
yoco315:C++ 爛死了 qq 大家快投入 golang 的懷抱 01/08 18:11
VictorTom:有return value的就用Set/GetError型式吧, 像GL(逃XD) 01/09 00:52