[除錯筆記] 錯誤訊息不要急著關掉,先讀它
前言剛開始寫程式時,看到紅字很容易緊張。
很多人的第一反應會是:複製錯誤訊息去搜尋,或是直接問人「這是什麼問題」。
搜尋和問人都沒有錯,但在那之前,我覺得可以先做一件事:把錯誤訊息完整讀完。
錯誤訊息通常不是敵人,它其實是在告訴你程式壞在哪裡。
先看錯誤類型錯誤訊息通常會先告訴你錯誤類型。
例如 C# 常見的:
1NullReferenceException
這代表你正在操作一個 null 物件。
或是:
1IndexOutOfRangeException
這通常代表你存取了陣列或集合不存在的位置。
先知道錯誤類型,就能先縮小問題範圍。
再看錯誤位置錯誤訊息通常也會附上檔案名稱和行數。
例如:
1at UserService.GetUserName(Int32 userId) in UserService.cs:line 42
這句話的意思是,錯誤發生在 UserService.cs 的第 42 行。
這時候不要只盯著最後一行,也要往上看呼叫堆疊。因為真正的問題有時候不是爆掉的那一行,而是前面傳進來的資料已經不對。
看懂「發生什麼」和「在哪裡發生」讀錯誤訊息時,可以先回答兩個問題 ...
[Git] Commit Message 到底要怎麼寫才好維護?
前言剛開始使用 Git 的時候,我其實也常常把 commit message 寫得很隨意。
例如:
123git commit -m "update"git commit -m "fix bug"git commit -m "改一下"
當下看起來沒有問題,因為自己還記得剛剛改了什麼。
但只要過了一兩週,或是專案裡有其他人一起開發,再回頭看這些 commit,就會發現它們幾乎沒有提供任何有效資訊。
這篇就整理一下,我自己在寫 commit message 時會注意的幾個方向。
Commit Message 的用途commit message 不是寫給 Git 看的,而是寫給「未來需要理解這段變更的人」看的。
這個人可能是同事,也可能是幾個月後的自己。
好的 commit message 至少要能回答兩個問題:
這次改了什麼?
為什麼要這樣改?
如果 commit message 只寫 fix,那未來看到的人就只能進 diff 裡慢慢猜。
可以用動詞開頭我自己會習慣用一個清楚的動詞開頭,讓 commit 看起來像一個明確的操 ...
[C#] try & catch 淺談及小測驗
前言寫程式時,幾乎一定會遇到需要使用 try & catch 的情境。
它看起來只是把程式碼包起來,但實際上是在幫我們處理「程式執行時可能出現的例外狀況」。這篇就用幾個簡單範例,整理 try & catch 的用途、常見寫法,以及幾個容易混淆的小觀念。
try & catch 的作用是什麼?簡單來說,try & catch 通常有兩個主要使用契機:
→ 避免程式在執行時,因為非預期錯誤而直接中斷。
→ 針對已預期可能發生的例外情境,設計對應的處理流程。
–
大多數情況下,我們使用 try & catch ,都是為了避免程式發生 崩潰(crash),導致後續功能無法繼續執行。
只要程式沒有直接 crash,通常就還有機會繼續運作,或至少能留下錯誤資訊,方便後續追查。至於功能是否完全正確,那就是另一個故事了
123456789// 程式發生例外錯誤的簡單範例static void Main(string[] args){ string a = null; a = a.ToString(); Console.W ...
[Hexo + Butterfly] 教你在切換深淺模式時,同步更換頂部首頁圖
前言這陣子剛開始經營 Blog,玩 Hexo 跟 Butterfly 主題玩得很開心,也一直在找各種主題美化的資料。
不過我找了很久,都沒有找到「依照深色 / 淺色模式,自動切換頂部與底部背景圖」的做法。最後就用自己的方式把它實作出來了。
這篇會記錄我的做法。原則上,我會盡量避開 Hexo 與 Butterfly 主題的原始檔,改用自訂設定與樣式來完成,之後維護起來也比較方便。
Hikari 也是剛接觸 Hexo 不久,所以這不一定是唯一或最完美的解法,但可以當作一個實作方向參考看看。
步驟流程第一步:在 .yml 檔新增參數首先,到 _config.butterfly.yml 裡定義一個新的圖片路徑參數。
123456# The banner image of home pageindex_img: /pic/index_img.png# 切換深淺模式時使用的第二張首頁圖。# index_img_w 是自訂名稱,可以依需求調整;後方則是圖片路徑。index_img_w: /pic/white.gif
這樣一來,之後要維護圖片就很單純,只要調整路徑即可。
第二步:新增 . ...
Hexo 操作手冊
這篇是建立 Hexo 專案時產生的基礎範例文。
它主要用來記錄幾個最常用的 Hexo 指令,方便剛開始整理 Blog 時快速查閱。等後續文章累積得更完整之後,再視情況把這篇移除也不遲。
Quick Start建立新文章1$ hexo new "My New Post"
More info: Writing
啟動本機伺服器1$ hexo server
More info: Server
產生靜態檔案1$ hexo generate
More info: Generating
部署到遠端站台1$ hexo deploy
More info: Deployment