開發日記 錯誤雜錦

2021-06-28 16:06:50 字數 565 閱讀 4861

實際程式設計時,往往出現一些低階錯誤。這些錯誤與**的使用本身無關,與演算法也無關,而是由於自己的粗心大意。一旦出現這種錯誤,往往讓人摸不著頭腦,瞎糊弄半天沒找出問題的根源。

將自己所犯過的低階錯誤一一記錄於此,謹防日後再犯!

1、不要在子函式內部列印輸出變數的值

因為,子函式往往被多次呼叫,每次呼叫的結果都不一樣。如果用類似控制台列印、寫檔案的方法,只會顯示或儲存最後一次呼叫的結果!

在內部看結果,僅限於debug單步的時候!

這次就被這個問題搞得很鬱悶:

目的是要觀察直方圖中的最大值座標(通過乙個子函式實現),座標值為double變數。在debug下單步進去該函式是直接可以看到的,我多手把它列印出來,結果發現出問題了。用了所有方法,c的file和fwrite、c++的ofstream、控制台cout、yml的filestorage,結果都是「錯誤的」,和我debug看到的不一致。怎麼想也不可能,最後竟然想難道stdio不支援double型變數?

就是疏忽了這條細節,其實這個子函式在後面又呼叫了一次,所以我每次看到的都是最後一次的結果,當然跟debug看到的當前值不一樣!

2、待續......

Windows開發筆記 錯誤處理

windows函式為開發者提供了錯誤 這樣當呼叫windows函式失敗後,可以通過檢視錯誤 了解錯誤資訊。相應的錯誤與主調執行緒關聯在一起,這種機制使得不同的執行緒能夠獨立執行而不會相互干擾。呼叫getlasterror 檢視錯誤 windows提供的錯誤 很多,相應的標頭檔案是winerror.h...

matlab程式設計筆記 錯誤集錦

總結一些自己遇到過的使人抓狂的報錯,往往是自己粗心大意造成的 disp jafjjaja index exceeds matrix dimensions 原因 前面把disp定義為變數了,程式設計的時候千萬要注意噢!已存在的函式名不能用作變數名 find a b ans empty matrix 1...

Swift學習筆記 錯誤處理

錯誤分為可恢復的錯誤和不可恢復的錯誤,可恢復的錯誤指的是能預見並處理的錯誤,例如檔案不存在,網路連線失敗等 不可恢復的錯誤指的是一類特殊的bug,例如強制展開值為nil的可空例項,陣列越界訪問等 如果發生錯誤沒有處理,程式就會停止執行。遺憾的是swift中似乎只能處理可恢復的錯誤。swift中使用a...