js017-錯誤處理與除錯
本章內容
理解瀏覽器報告的錯誤
處理錯誤
除錯js**
17.2錯誤處理
17.2.1try-catch語句
trycatch(error)catch(error)finally{
return 0;
該函式只會返回0,只有當最後面的finally去掉後該函式才可能返回2.
2、錯誤型別
以下7種錯誤型別:及其觸發場景
error
基型別evalerror
在使用eval()函式而發生異常是丟擲
rangeerror
在數值超出相應範圍時觸發
referenceerror
找不到物件是觸發
syntaxerror
當我們把錯誤的js字串傳入eval()函式是觸發
typeerror
在變數中儲存著意外的型別是,或者在訪問不存在的方法時。
urierror
在使用encodeuri()或decodeuri(),而uri格式不正確時
3、合理使用try-catch
17.2.2丟擲錯誤
throw 操作符,用於隨時拋出自定義錯誤。在遇到throw時,**會立即停止執行。僅當有try-catch捕獲到被丟擲的錯誤時**才會繼承執行。
1、丟擲錯誤的時機
2、丟擲錯誤與使用try-catch
17.2.3錯誤事件
只要發生錯誤,無論是不是瀏覽器生成的都會觸發error事件,並執行事件,處理程式。
如下事件處理程式中返回false,可以組織瀏覽器報告錯誤的預設行為
window.onerror = function(message, url, line){
alert(message);
return false;
影象也支援error事件。只要影象中的額src特性中的url不能返回可以被識別的影象格式,就會觸發error事件。
17.2.4處理錯誤的策略
17.2.5常見的錯誤型別
錯誤處理的核心是首先要知道**裡會發生什麼錯誤。一般來說,需要關注三種錯誤:
1、型別轉換錯誤;
發生在使用給某個操作符,或者使用其他可能會自動高轉換至的資料型別的語言結構時。在使用相等(==)不等(!=)或者if,for,while等流控制語句中使用非布林值是,最長發生型別轉換錯誤。
使用全等和非全等操作符,可以避免發生因為使用相等和不等操作符引發的型別轉換錯誤
2、資料型別錯誤;
3、通訊錯誤;
17.2.6區分之名錯誤和非致命錯誤
17.2.7把錯誤記錄到伺服器
17.3除錯技術
17.3.1將訊息記錄到控制台
ie8,firefox,opera,chrome,safari,都有js控制台,可以用來檢視js錯誤。而且,在這些瀏覽器中的,偶可以通過**想控制台輸出訊息,對ie8,firefox,chrome,safari,而言可以通過console物件向js控制台寫入該訊息,這個物件具有下列方法:
error(message)
將錯誤訊息記錄到控制台
info(message)
將資訊性訊息記錄到控制台
log(message )
將一般訊息記錄到控制台
warn(message)
將警告訊息記錄到控制台
17.3.2將訊息記錄到當前頁面
在頁面中開闢一小塊區域用於顯示小。這個區域通常是乙個元素。
17.3.3丟擲錯誤
17.4常見的ie錯誤
1、操作終止
2、無效字元
3、未找到成員
4、未知執行時錯誤
5、語法錯誤
6、系統無法找到指定資源
js錯誤處理和除錯
1 重點關注函式和可能導致函式執行失敗的因素。2 丟擲錯誤和使用try catch的時機 一般來說在應用程式架構較低的層次中經常會丟擲錯誤。這個層次並不會影響當前執行的 錯誤也得不到真正的處理。在多應用中使用的庫和應用內部多處使用的輔助函式時,丟擲錯誤後要提供詳盡的錯誤資訊。3 只捕獲確切知道該如何...
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 這樣...