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

file

然後一樣是 crash 掉,而且是 debugger crash 掉!這個厲害吧?

因為沒有見識過這麼強的 crash,稍微查了一下,原來這個 3221225477 錯誤基本上就是一種 stack overflow,而由於這是非常底層的記憶體錯誤,即使是偵錯模式的 debugger 都沒有辦法把它攔截下來,會直接爆炸給你看。在我的情況中,這個錯誤是因為下面的計算屬性打錯了:

public string BranchString => $"{BranchCode}({BranchString})";

其中第二個 BranchString 應該是 BranchName 才對(自動完成敲得太快結果敲到了計算屬性自己),這麼一來程式就無窮循環執行,導致 stack overflow。在此作個筆記,下次再遇到的時候就知道了。

分享此頁至:
最後修改日期: 2020/06/11

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。