今天在開發 C# 的時候遇到一個之前沒看過的錯誤;如果在非偵錯模式底下,執行到那個錯誤發生的地方站台就直接 crash 掉而完全沒辦法 catch,而如果在偵錯模式底下,執行到該處則會跳出下面的對話方塊:

然後一樣是 crash 掉,而且是 debugger crash 掉!這個厲害吧?
因為沒有見識過這麼強的 crash,稍微查了一下,原來這個 3221225477 錯誤基本上就是一種 stack overflow,而由於這是非常底層的記憶體錯誤,即使是偵錯模式的 debugger 都沒有辦法把它攔截下來,會直接爆炸給你看。在我的情況中,這個錯誤是因為下面的計算屬性打錯了:
public string BranchString => $"{BranchCode}({BranchString})";
其中第二個 BranchString 應該是 BranchName 才對(自動完成敲得太快結果敲到了計算屬性自己),這麼一來程式就無窮循環執行,導致 stack overflow。在此作個筆記,下次再遇到的時候就知道了。
我的文章對您有幫助嗎?請我喝杯咖啡吧:
留言