第 4 章 除錯
∗ 完成程式的一大挑戰:除錯 (Debug)
▸ 策略:與其事後除錯,最好一開始就避免出錯
▸ 作法:
✶ 從小處開始:應將大問題分成小問題,從小問題開始解決才容易成功
✶ 經常測試:等到寫了許多程式才開始測試,如果有錯誤會很難釐清問題所在
✶ 以累積的方式來加入程式:完成一部分程式後立即開始測試,測試完成後再加入一小部份程式,再繼續測試,漸漸往目標推進。 只加一小部份程式就要測試,這樣如果有錯,也比較可能是發生在新加入的程式,除錯較為容易
(1) 錯誤類別
∗ 錯誤類別
▸ 依照發生頻率統計,SyntaxError, TypeError, NameError, ValueError 四種錯誤佔了所有錯誤近 90%:
錯誤訊息 | 比例 | 說明 |
---|---|---|
SyntaxError | 54.74% | 語法錯誤 |
TypeError | 14.29% | 型態錯誤 (例如:函式參數數量不對) |
NameError | 11.05% | 名稱錯誤 (例如:未定義的變數) |
ValueError | 9.78% | 值錯誤 (例如:應該是數值,卻給了字串) |
TokenError | 2.67% | 字元錯誤 (例如:括號不對稱或輸入了不允許的字元) |
IndentationError | 0.31% | 縮排錯誤 |
AttributeError | 0.30% | 屬性錯誤 (例如:物件無此屬性) |
ImportError | 0.18% | 匯入錯誤 (例如:匯入的套件不存在) |
IndexError | 0.07% | 索引錯誤 (例如:陣列元素不存在) |