看板 Programming 關於我們 聯絡資訊
※ 引述《meltice (三億兩千萬大散戶)》之銘言: : 我始終不懂try catch怎麼用 : 例如到底該catch什麼東西 : catch(...)雖然可以catch到全部但是卻不知道是catch到什麼東東 : catch到的pointer到底要不要在delete或Release : 前一陣子使用try catch(...) : 搞了半天不知道程式錯在哪裡 : 因為function也是別人寫的我沒有source code : 最後找到因為別人的function裡面call CopyMemory : 然後他沒有去處裡CopyMemory也會產生的exception : 結果讓我catch到 : 然後換我不知道到底是錯在哪裡 : 反正try catch就是一整個很亂七八糟的東西 : 會讓自己讓別人都亂七八糟的東西 : 還是用if else最清楚明白一目暸然 以C++的概念來講的話, 繼承標準exception來作修改, 會是一個比較好的方法 而不是自創一堆exception丟來丟去 參考一下#include <exception>的寫法 http://www.cplusplus.com/doc/tutorial/exceptions.html 這裡有些範例碼 以及教你怎麼繼承std理面的exception 還有個資本額兩億上下的大公司寫出來的code原始碼連char*都throw出來 看了一整個昏倒/faint 這種屬於debug層面的東西並不是只有coder自己寫的爽寫的好就好 要考慮後面接手的人debug的難度 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.211.69
ephesians:丟一個字串出來,很怪嗎? 61.231.66.196 09/25 12:31
xcycl:很怪, 因為沒辦法標準例外接住來看 ... 220.134.69.245 09/25 14:35
ephesians:可是上次我寫過一個練習,接到了這例外 61.231.66.196 09/25 19:11
UNARYvvv:其實 m 大原本提到那個 CopyMemory 寫入140.115.222.102 09/25 23:22
UNARYvvv:錯誤的 exception 跟 C++ exception是不140.115.222.102 09/25 23:23
UNARYvvv:一樣的東西140.115.222.102 09/25 23:23
UNARYvvv:對了關於丟出字串140.115.222.102 09/25 23:24
UNARYvvv:單純想用 catch (const char *e)140.115.222.102 09/25 23:24
UNARYvvv:接住一個提示錯誤的訊息的需求應該夠用吧140.115.222.102 09/25 23:24
UNARYvvv:(並非否定 std::exception 相關的好處)140.115.222.102 09/25 23:31
Killercat:的確throw char*是很簡便的寫法 220.132.211.69 09/26 06:28
Killercat:不過在大多數商用軟體理面debug需求不會 220.132.211.69 09/26 06:28
Killercat:那麼簡單, 而且大多數設計共識都是拿 220.132.211.69 09/26 06:29
Killercat:std::exception來parse, 盡量不要把教科 220.132.211.69 09/26 06:29
Killercat:書跟實作混為一談比較好 220.132.211.69 09/26 06:30
Killercat:然後例外當然不會接不到, 這一定的 220.132.211.69 09/26 06:30
xcycl:我是指不能用 std::exception 接到 = = 220.134.69.245 09/26 10:52
xcycl:例如光用 char* 作 traceback 很麻煩的 ... 220.134.69.245 09/26 10:53
Killercat:aye, 這點我也是我想說的 意見相同 XD 125.233.129.77 09/26 13:32
Killercat:因為我們catch都馬抓std::exception =w= 125.233.129.77 09/26 13:32