看板 C_and_CPP 關於我們 聯絡資訊
我不是高手,只是新手... 一點經驗分享 ※ 引述《StarTouching (撫星)》之銘言: : Error handling大致有以下幾種方式 : 1. 丟出例外 請呼叫的人掌握狀況 exception 只有在 c++ 才有,在 c 就沒有這個選項了 雖然 c 可以用 setjmp.h 不過用起來沒這麼直覺 而且你如果寫了一個dll,不確定對方會用 c 或 c++ import 的話你也不能用 exception 但是在 c++ 的話個人偏好用 exception,用方法4每次都要判斷 return 實在很麻煩 另外定義一個 error class,裡面定義 error code 跟 error message error code 就可以模擬方法4 error message 可以當作方法3要寫得資料 : 2. assert : ("Exceptions address the robustness of your application while assertions : address its correctness" : 出處: http://stackoverflow.com/a/1957656/1992731 ) 在 release 的時候基本上不會用這個吧... 直接把程式整個關閉= = : 3. 寫error log 這個挺好用的,不一定要 error 才寫到 log,平常就可以把有用的訊息都寫出來 可以更方便的了解程式流程 android 的 logcat 就挺方便的,他有定義不同層級的 log : 4. return一個值 請呼叫的人自己處理 在純 c 的環境我會用這種方式回傳 定義一組 error code list 方便出現錯誤的時候判斷 如果是寫 api 給別人用可以用這種方式,客戶發生錯誤的時候直接回報 error code 可以初步判斷錯誤原因 可以考慮用 or 的方式組合 error code ex.錯誤訊息定義為 0xff000000 | system error code 你今天是要用 c 的 open 開啟一個檔案,但檔案不存在,errno 就會是 0x2 這時你就可以組合出 0xff000000 | 0x0002 = 0xff000002 直接 return 0xff000002 如果整個都沒有錯誤就直接回傳 0x0 但程式在每次呼叫 function 都要在用 if 判斷 return ,寫起來就很多重複的 code : 5. 測資可以過就好 可以跟Boss交差就好 (誤) 這就良心問題啦... 如果你趕著要畢業就這樣做吧... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.241.8.141 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1400315700.A.973.html