紅寶書 第17章錯誤處理與除錯

2022-09-04 00:09:25 字數 2077 閱讀 3371

ie、firefox、safari、chrome、opera等主流瀏覽器都具有某種向使用者報告js錯誤的機制。預設情況下,所有瀏覽器都會隱藏此類資訊。

良好的錯誤處理機制可以讓使用者及時得到提醒。

trycatch(e)

try塊中的任何**發生錯誤,就會立即退出**執行過程,然後接著執行catch塊。此時,catch塊會接收到乙個包含錯誤資訊的物件。

這個物件包含的實際資訊會因瀏覽器而異,但共同的是有乙個儲存著錯誤訊息的message屬性,還規定了乙個儲存錯誤型別的name屬性。

1.finally子句

只要**塊包含finally子句,則無論try或catch語句塊中包含什麼**(甚至return語句),都不會阻止finally子句的執行。

function testfinally()  catch (error)  finally 

}

上述函式無論如何都只返回0

2.錯誤型別

error:基型別,其他錯誤型別都繼承自該型別。很少見,如果有也是瀏覽器丟擲。這個基型別的主要目的是供開發人員跑出自定義錯誤。

evalerror:會在使用eval()函式而發生異常時丟擲。如果沒有將eval()當成函式呼叫則丟擲。

範圍錯誤rangeerror:數值超出相應範圍時觸發。如指定陣列項數為不支援的項數-20或number.max_value

let item = new array(-20)

引用錯誤referenceerror:找不到物件的情況下,比如訪問不存在的變數

var obj = x // x未宣告

語法錯誤syntaxerror:語法錯誤的js字串傳入eval()函式。如果語法錯誤的**出現在eval()函式外則會導致js**立即停止執行。

eval("a++"b)

型別錯誤typeerror:變數中儲存意外的型別或者在訪問不存在的方法。歸根結底還是由於執行特定於型別的操作時,變數的型別並不符合要求所致。

let obj = new 10

uri錯誤urierror:encodeuri()或decodeuri()

利用不同的錯誤型別可以獲悉更多有關異常的資訊,從而有助於對錯誤做出恰當的處理。

try  catch (error) else if(error instanceof referenceerror)else

}

3.合理使用try-catch

適合處理哪些我們無法控制的錯誤比如使用第三方庫中的函式,而該函式可能會丟擲錯誤,而我們無法修改庫的源**,因此捕獲錯誤有錯誤發生進行恰當處理。

throw操作符用於拋出自定義錯誤。在遇到throw操作符時,**會立即停止執行。僅當有try-catch語句捕獲到被丟擲的值時,**才會繼續執行

throw new syntaxerror('i don』t like your syntax.')

任何沒有通過try-catch處理的錯誤都會觸發window物件的error事件。

onerror事件接收三個引數:錯誤訊息、錯誤所在url和行號

window.onerror = function(message, url, line)

必須要知道**何時可能出錯,會出什麼錯,同時還要有乙個跟蹤此類問題的系統。

1.型別轉換錯誤

使用===,!==

流控制語句 if

2.資料型別錯誤

檢查型別

基本型別用typeof

引用型別用instanceof

3.通訊錯誤

使用encodeuricomponent()

非致命錯誤:不影響使用者的主要任務,只影響頁面的一部分,可以恢復,重複相同操作可以消除人物

此時沒有必要打斷使用者的使用,給出提示說明相應功能無法使用

致命錯誤:應用程式根本無法繼續執行,錯誤明顯的影響到了使用者的主要操作,會導致其他連帶錯誤

1.將訊息記錄到控制台

2.將訊息記錄到當前頁面

3.丟擲錯誤

第20章 錯誤處理(119)

源 程式目的 學習 從零開始學swift 第20章 錯誤處理 create by chenzhen enum daoerror error class note class notedao 刪除note方法 func remove model note throws 比較日期主鍵是否相等 for i...

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 這樣...