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