天天看點

《像計算機科學家一樣思考Python(第2版)》——2.8 調試

本節書摘來自異步社群《像計算機科學家一樣思考python(第2版)》一書中的第2章,第2.8節,作者[美] allen b. downey,趙普明 譯,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

一個程式中可能出現3種錯誤:文法錯誤、運作時錯誤和語義錯誤。對它們加以區分,可以更快地找到錯誤。

文法錯誤

文法指的是程式的結構以及此結構的規則。例如,括号必須前後比對,是以(1+2)是合法的,而8)就是一個文法錯誤。

程式中隻要出現一處文法錯誤,python就會顯示出錯消息并退出,你的程式就無法運作了。在程式設計生涯的最初幾周中,可能會需要花費大量時間來查找文法錯誤。但随着經驗的增加,犯錯會越來越少,查找起來也會越來越快。

運作時錯誤

第二類錯誤是運作時錯誤,這樣稱呼是因為這種錯誤隻有程式運作後才會出現。這些錯誤也常被稱為異常(exception),因為它們常常表示某些異常的(而且不好的)事情發生了。

運作時錯誤在開頭幾章中的簡單示例裡很少會出現,是以可能要過一段時間你才會遇到。

語義錯誤

第三類錯誤是語義錯誤,意思是錯誤與含義相關。如果你的程式中有一個語義錯誤,程式仍會成功運作,而不會産生任何出錯消息,但是它不會執行正确的邏輯。它會做其他的事情。特别需要注意的是,它所做的正是你的代碼所告訴它的。

查找語義錯誤會比較麻煩,因為需要反向查找,檢視程式輸出并嘗試弄明白它到底做了什麼。