Re: [問題] C++ try-catch語法

看板Programming作者 (殺人貓™)時間16年前 (2007/09/25 07:56), 編輯推噓7(7013)
留言20則, 4人參與, 最新討論串6/6 (看更多)
※ 引述《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

09/25 12:31, , 1F
丟一個字串出來,很怪嗎?
09/25 12:31, 1F

09/25 14:35, , 2F
很怪, 因為沒辦法標準例外接住來看 ...
09/25 14:35, 2F

09/25 19:11, , 3F
可是上次我寫過一個練習,接到了這例外
09/25 19:11, 3F

09/25 23:22, , 4F
其實 m 大原本提到那個 CopyMemory 寫入
09/25 23:22, 4F

09/25 23:23, , 5F
錯誤的 exception 跟 C++ exception是不
09/25 23:23, 5F

09/25 23:23, , 6F
一樣的東西
09/25 23:23, 6F

09/25 23:24, , 7F
對了關於丟出字串
09/25 23:24, 7F

09/25 23:24, , 8F
單純想用 catch (const char *e)
09/25 23:24, 8F

09/25 23:24, , 9F
接住一個提示錯誤的訊息的需求應該夠用吧
09/25 23:24, 9F

09/25 23:31, , 10F
(並非否定 std::exception 相關的好處)
09/25 23:31, 10F

09/26 06:28, , 11F
的確throw char*是很簡便的寫法
09/26 06:28, 11F

09/26 06:28, , 12F
不過在大多數商用軟體理面debug需求不會
09/26 06:28, 12F

09/26 06:29, , 13F
那麼簡單, 而且大多數設計共識都是拿
09/26 06:29, 13F

09/26 06:29, , 14F
std::exception來parse, 盡量不要把教科
09/26 06:29, 14F

09/26 06:30, , 15F
書跟實作混為一談比較好
09/26 06:30, 15F

09/26 06:30, , 16F
然後例外當然不會接不到, 這一定的
09/26 06:30, 16F

09/26 10:52, , 17F
我是指不能用 std::exception 接到 = =
09/26 10:52, 17F

09/26 10:53, , 18F
例如光用 char* 作 traceback 很麻煩的 ...
09/26 10:53, 18F

09/26 13:32, , 19F
aye, 這點我也是我想說的 意見相同 XD
09/26 13:32, 19F

09/26 13:32, , 20F
因為我們catch都馬抓std::exception =w=
09/26 13:32, 20F
文章代碼(AID): #16-4wMlg (Programming)
討論串 (同標題文章)
文章代碼(AID): #16-4wMlg (Programming)