推 Schottky: 這是個很值得探討的問題,但我這陣子暫時沒空回文細說 11/25 00:51
→ Schottky: C 沒有 try-catch 因此錯誤處理確實要自己做不少事 11/25 00:53
→ Schottky: 第一個問題可以用 macro 包裝固定的錯誤檢查程序 11/25 00:54
→ Schottky: 第二個沒問題,其實出錯時你會想知道 call stack 11/25 00:56
→ Schottky: 底層出錯時偶爾會想知道上層是哪隻豬居然這樣呼叫 11/25 00:56
推 Schottky: 如果要集縮成一行也可以,就把錯誤訊息一路往上傳到最 11/25 01:03
→ Schottky: 上層(你這邊是業務邏輯層)才寫log,每一層再各自加上自 11/25 01:03
→ Schottky: 己的姓名和見解,就形成了一個完整的 call stack 11/25 01:03
推 Ryspon: 好奇推 11/25 02:08
推 CodingMan: 我也想知道 11/25 08:44
推 chuegou: 關注 11/25 09:35
→ F04E: 我自己實務上也是採用Schottky的作法 11/25 10:10
推 flysonics: 和Schottky相似+1 11/25 11:07
→ flysonics: 不過我的習慣是寫一個handler去接所有檢查邏輯fail的情 11/25 11:08
→ flysonics: 況 這樣順帶可以從handler function下列清單 一目了然 11/25 11:09
→ flysonics: 看到自己埋了哪些檢查點 11/25 11:09
→ flysonics: log的部分 我是會整個Task全部用一個structure去管 11/25 11:09
→ flysonics: 萬一底層發生問題時 只要直接將必要資訊記在structure 11/25 11:11
→ flysonics: 上 到最上層時再assert卡下來 11/25 11:11
→ flysonics: 沒有try&catch 就自己兜個堪用的方便debug的概念 11/25 11:13
推 Qbsuran: wireshark有實作出try-catch(純C) 可以看看source 11/25 15:46
推 eye5002003: 我很懶惰,所以都是抓__FILE__跟__LINE__噴一下位置 11/25 18:21
→ eye5002003: 出問題的時候才來認真嵌訊息調查 11/25 18:29
推 alan23273850: 我怎麼記得c++有支援try-catch 11/26 10:31
推 ko27tye: c++有阿 標題問的是C 11/26 14:27
推 x246libra: go的錯誤處理跟C有點像似 要參考一下嗎 11/28 20:44
→ x246libra: 跳到 Opaque errors 來看 11/28 20:45
推 exeex: 做起來應該跟golang有87%像 12/01 14:12
→ exeex: 不過golang可以return兩個以上的變數包含err, C要另外想辦 12/01 14:12
→ exeex: 法 12/01 14:12
→ exeex: 用macro把return包住是一個方法 12/01 14:13
推 flysonics: 用macro把return包住 這樣會讓後面讀code的人困擾吧.. 12/02 15:24
→ flysonics: . 12/02 15:24
→ flysonics: 你包了個一格洞在裡面誰知道 12/02 15:24
推 dou0228: wireshark exception + zlog, 不要用 __FILE__ 12/05 17:10