首先先說錯誤的概念預處理
電腦程式的錯誤分為兩種:語法錯誤和邏輯錯誤。
比如alert拼寫錯誤,寫成了alter
vara = 3+
4;alert
(a);
alter(7)
;a++
;alert
(a);
執行結果只顯示了7 ,後面的結果沒有顯示,說明後面的**沒有執行。因為輸出7後遇到了語法錯誤,程式終止執行。
上例也進一步說明了解釋性語言的特點,翻譯一條,執行一條,遇到錯誤提前終止執行。
varb = a + 3;
alert
(b);
如圖一:
語法錯誤的發現方法:
瀏覽器的開發者工具console視窗,能顯示錯誤及說明。
trycatch(e) 捕獲異常
邏輯錯誤:程式在語法上是沒有問題的,但是實際執行效果和預期結果有出入。
varage = number(
prompt
("請問你的年齡是"));
if(
17 <= age <=
24)else;
當輸入年齡96或者3時,都能報名參軍,結果顯然是錯誤的,但執行過程中沒有任何語法錯誤。
除錯的基本原理:
程式的執行是自動的,而且速度非常快,無法了解中間的執行過程,但是幾乎所有的開發工具都提供了除錯功能,可以去控制程式的執行節奏,從而可以讓開發者看清執行的過程。
控制執行節奏:
設定斷點。
開啟開發者工具,在source頁開啟源**。
在行號左邊單擊即可在該處設定斷點,見圖二
單步執行(step)快捷鍵f10.
每執行一步都會停下來,然後再繼續下一步,見圖三
控制節奏的目的是看清或者了解程式的執行過程,而不僅僅是結果。
開結果步驟:
檢視程式執行的步驟,也就是上圖中的指示即將要執行的**指示器,如果軌跡與預期不一致,說明上一步執行的**出現了邏輯錯誤。
還可以去檢視變數、表示式的值。
a.在watch視窗新增要檢視的變數或表示式,見圖四
此時就可以看到age的值
在watch視窗就可以看到新增的變數或者表示式的值,見圖五
因為電腦程式的每一步執行的結果都是唯一的、可預期的。同時我們又可以通過上述手段控制程式的執行節奏並檢視程式執行的狀態(如軌跡、變數表示式的值),也就是我們可以看到實際執行結果。那麼將實際結果和預期結果對比,如果出現不一致,說明剛剛執行的那一步出現的錯誤,即
定位錯誤
。
一旦定位錯誤,根據所學知識或經驗,應該就很容易出現錯誤原因,從而找到解決方案。
再來除錯乙個
var a = prompt("請輸入第一邊長");
var b = prompt("請輸入第二邊長");
var c = prompt("請輸入第三邊長");
var p = (a + b + c) / 2;//計算周長的一半
var s = math.sqrt(p * (p - a) * (p - b) * (p - c));//海**式計算面積
alert(s);
執行程式,程式將在預定位置停止,見圖五
檢視三個變數 見圖六
單步執行,檢視p的值 見圖七
在檢視a+b+c的值 見圖八
a+b+c的值並不是我們預期的6,而是「345」,原來是做了字串的拼接運算,而不是我們希望的加法,所以是型別問題。
解決方案就是將輸入的資料(字串)轉換為數值
除錯工具不僅僅是定位錯誤的工具,也是乙個非常重要的學習工具。
因為除錯工具可以讓我們直觀地看到執行軌跡以及執行狀態,有助於我們對於一些抽象知識的理解。
javascript 錯誤處理與除錯 一
try catch 特點 1.可以獲取錯誤資訊 2.可以避免瀏覽器控制台報錯 3.可以遮蔽錯誤,繼續執行,ps,但是繼續執行的語句如果和錯誤的語句有上下文關聯,那麼下面的語句可能繼續出錯 try catch e ps try表示嘗試著執行裡面的 如果有錯誤,就去執行catch裡面的 alert tr...
javascript 錯誤處理與除錯 二
try catch的意義 1.可以通過修改 來排錯,不需要使用try catch 2.瀏覽器相容性問題,可以通過判斷瀏覽器或判斷是否支援某個屬性或方法來判斷 不需要try catch 比如,無法修改 的情況下,可能會傳送錯誤,這個時候用try catch,網路中斷了 trycatch e ps 這樣...
Python錯誤與除錯
try catch語法 try pass except someerror as e pass except someerror as e pass finally pass日誌級別 critical error warning info debug notset import logging lo...