作者Killercat (殺人貓™)
站內Programming
標題Re: [問題] C++ try-catch語法
時間Tue Sep 25 07:56:05 2007
※ 引述《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
1F:推 ephesians:丟一個字串出來,很怪嗎? 61.231.66.196 09/25 12:31
2F:推 xcycl:很怪, 因為沒辦法標準例外接住來看 ... 220.134.69.245 09/25 14:35
3F:推 ephesians:可是上次我寫過一個練習,接到了這例外 61.231.66.196 09/25 19:11
4F:推 UNARYvvv:其實 m 大原本提到那個 CopyMemory 寫入140.115.222.102 09/25 23:22
5F:→ UNARYvvv:錯誤的 exception 跟 C++ exception是不140.115.222.102 09/25 23:23
6F:→ UNARYvvv:一樣的東西140.115.222.102 09/25 23:23
7F:→ UNARYvvv:對了關於丟出字串140.115.222.102 09/25 23:24
8F:→ UNARYvvv:單純想用 catch (const char *e)140.115.222.102 09/25 23:24
9F:→ UNARYvvv:接住一個提示錯誤的訊息的需求應該夠用吧140.115.222.102 09/25 23:24
10F:→ UNARYvvv:(並非否定 std::exception 相關的好處)140.115.222.102 09/25 23:31
11F:推 Killercat:的確throw char*是很簡便的寫法 220.132.211.69 09/26 06:28
12F:→ Killercat:不過在大多數商用軟體理面debug需求不會 220.132.211.69 09/26 06:28
13F:→ Killercat:那麼簡單, 而且大多數設計共識都是拿 220.132.211.69 09/26 06:29
14F:→ Killercat:std::exception來parse, 盡量不要把教科 220.132.211.69 09/26 06:29
15F:→ Killercat:書跟實作混為一談比較好 220.132.211.69 09/26 06:30
16F:→ Killercat:然後例外當然不會接不到, 這一定的 220.132.211.69 09/26 06:30
17F:推 xcycl:我是指不能用 std::exception 接到 = = 220.134.69.245 09/26 10:52
18F:→ xcycl:例如光用 char* 作 traceback 很麻煩的 ... 220.134.69.245 09/26 10:53
19F:推 Killercat:aye, 這點我也是我想說的 意見相同 XD 125.233.129.77 09/26 13:32
20F:→ Killercat:因為我們catch都馬抓std::exception =w= 125.233.129.77 09/26 13:32