最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript高級程序設(shè)計 錯誤處理與調(diào)試學(xué)習(xí)筆記

 更新時間:2011年09月10日 02:48:20   作者:  
JavaScript高級程序設(shè)計 錯誤處理與調(diào)試學(xué)習(xí)筆記,學(xué)習(xí)js的朋友可以參考下。
第十四章 錯誤處理與調(diào)試
1.開啟瀏覽器錯誤報告
1.1 Internet Explorer
□Toos → Internet Option → Anvanced → Display a notification about every script error
1.2 Firefox
□Tools → Error Console (Firebug)
1.3 Safari
□Edit → Preferences → Advanced → Show develop menu in menubar/Develop → Show Error Console
1.4 Opera
□Tools → Advanced → Error Console
1.5 Chrome
□Control this page → Developer → JavaScript console
2.錯誤處理
2.1 Try-catch語句
try{
//可能會導(dǎo)致錯誤的代碼
}catch(error){
//錯誤發(fā)生時怎么處理
}
□錯誤發(fā)生時catch快回收到一個包含錯誤信息的對象。有一個兼容所有瀏覽器的message屬性。
2.1.1 finally子句
try-catch子句可選,finally子句一經(jīng)使用,其代碼無論如何都會執(zhí)行。
2.1.2 錯誤類型
□Error:基類型。主要目的是供開發(fā)人員拋出自定義錯誤。
□EvalError:用eval()函數(shù)發(fā)生異常時拋出。
□RangeError:數(shù)值超出相應(yīng)范圍時觸發(fā)。
□ReferenceError:找不到對象的情況下
□SyntaxError:把語法錯誤的JavaScript字符串傳入eval()函數(shù)。
□TypeError:變量中保存著意外的類型時,或訪問不存在的方法時。
□URIError:使用encodeURI()或decodeURI(),而URI格式不正確時。
根據(jù)不同的錯誤類型,進(jìn)行錯誤處理:
try{
soemFunction();
}catch(error){
if(error instanceof TypeError){
//處理類型錯誤
}else if(error instanceof ReferenceError){
//處理引用錯誤
}else{
//處理其他類型錯誤
}
}
2.1.3 善用try-catch
□使用try-catch語句,瀏覽器會認(rèn)為錯誤已經(jīng)被處理。
□使用try-catch語句,最適用吹那些我們無法控制的錯誤。
□明明白白地知道自己代碼發(fā)生錯誤就不該用try-catch而是修復(fù)錯誤。
2.2 拋出錯誤
①與try-catch語句相配有一個throw操作符。在遇到throw操作符時,代碼立即停止執(zhí)行。僅當(dāng)有try-catch語句捕獲到被拋出的值時,代碼才會繼續(xù)執(zhí)行。
②throw new Error("something bad happened."); 或利用原型鏈通過繼承Error來創(chuàng)建自定義錯誤類型。
2.2.1 拋出錯誤的時機(jī)
2.2.2 拋出錯誤與使用try-catch
2.2.3 錯誤(error)事件
①任何沒有通過try-catch處理的錯誤都會觸發(fā)window對象的error事件。
②任何瀏覽器中,onerror事件處理程序都不會創(chuàng)建event對象。但可接受3個參數(shù):錯誤消息、錯誤所在的URL和行號。(只有錯誤消息有用)
③指定onerror事件處理程序,必須使用DOM0級技術(shù)。
window.onerror = function(message,url,line){
alert(message);
return false; //通過返回false,此函數(shù)實際上充當(dāng)了整個文檔的try-catch語句可捕獲所有無代碼處理的運行時錯誤。
};
④圖像也支持error事件。只要圖像的src特性中URL不能返回可以被識別的圖像格式,就會觸發(fā)error事件。此時的error事件遵循DOM格式,會返回一個以圖像為目標(biāo)的event對象。
3.錯誤處理策略
3.1 常見的錯誤類型
□類型轉(zhuǎn)換錯誤
□數(shù)據(jù)類型錯誤
□通信錯誤
3.1.1 類型轉(zhuǎn)換錯誤
類型轉(zhuǎn)換錯誤發(fā)生在使用某個操作符,或者使用其他可能會自動轉(zhuǎn)換值的數(shù)據(jù)類型的語言結(jié)構(gòu)時。在使用相等(==)和不相等(!==)操作符,或者if、for及while等流控制語句中使用非布爾值時,最常發(fā)生類型轉(zhuǎn)換錯誤。
3.1.2 數(shù)據(jù)類型錯誤
在預(yù)料之外的值傳給函數(shù)的情況下,最容易發(fā)生數(shù)據(jù)類型錯誤。
3.1.3 通信錯誤
①URL格式不正確或發(fā)送的數(shù)據(jù)有問題。對查詢字符串,必須使用encodeURIComponent()方法。
②在服務(wù)器響應(yīng)的數(shù)據(jù)不正確時,也會發(fā)生通信錯誤。
3.2 區(qū)分致命錯誤和非致命錯誤
①非致命錯誤
□不影響用戶的主要任務(wù)
□只影響頁面的一部分
□可以恢復(fù)
□重復(fù)相同操作可以消除錯誤
②致命錯誤
□應(yīng)用程序根本無法運行
□錯誤明顯影響到了用戶的主要操作
□會導(dǎo)致其他連帶錯誤
3.3把錯誤記錄到服務(wù)器:(略)
4.調(diào)試技術(shù)
4.1 將消息記錄到控制臺
①IE8、Firefox、Chrome和Safari來說,可通過console對象向JavaScript控制臺中寫入消息。對象有下列方法:
□error(message):將錯誤消息記錄到控制臺
□info(message):將信息消息記錄到控制臺
□log(message):將一般消息記錄到控制臺
□warn(message):將警告消息記錄到控制臺
②還有一種方案是使用LiveConnect,也就是JavaScript中運行Java代碼。
③向JavaScript控制臺寫入消息的統(tǒng)一接口:
function log(message){
if(typeof console == "object"){
console.log(message);
}else if(typeof opera == "object"){
opera.postError(message);
}else if(typeof java == "object" && typeof java.lang == "object"){
java.lang.System.out.println(message);
}
}
4.2 將消息記錄到當(dāng)前頁面
4.3 拋出錯誤
①對大型應(yīng)用程序來說,自定義的錯誤通常使用assert()函數(shù)拋出。對這個函數(shù)接受兩個參數(shù),一個是求值結(jié)果為true的條件,另一個是條件為false時要拋出的錯誤。
function assert(condition, message){
if(!condition){
throw new Error(message);
}
}
②應(yīng)用:
function divide(num1,num2){
assert(typeof num1 == "number"&&typeof num2== "number","divide():Both arguments must be numbers.");
return num1/num2;
}
5.常見的IE錯誤
□操作終止
□無效字符
□未找到成員
□未知運行時錯誤
□語法錯誤
□系統(tǒng)無法找到指定資源

相關(guān)文章

  • JavaScript 實現(xiàn)自己的安卓手機(jī)自動化工具腳本(推薦)

    JavaScript 實現(xiàn)自己的安卓手機(jī)自動化工具腳本(推薦)

    這篇文章主要介紹了 JavaScript 實現(xiàn)自己的安卓手機(jī)自動化工具腳本,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 詳解JavaScript中的作用域鏈與閉包

    詳解JavaScript中的作用域鏈與閉包

    這篇文章主要為大家詳細(xì)介紹一下JavaScript中的作用域鏈與閉包的使用,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)JavaScript有一定的幫助,需要的可以參考一下
    2022-11-11
  • JavaScript字符串對象

    JavaScript字符串對象

    這篇文章主要為大家詳細(xì)介紹了JavaScript字符串對象,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • ES6 Promise對象的含義和基本用法分析

    ES6 Promise對象的含義和基本用法分析

    這篇文章主要介紹了ES6 Promise對象的含義和基本用法,結(jié)合實例形式分析了Promise的含義、功能、基本用法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-06-06
  • js實現(xiàn)輪播圖效果 z-index實現(xiàn)輪播圖

    js實現(xiàn)輪播圖效果 z-index實現(xiàn)輪播圖

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • JavaScript設(shè)計模式之單件模式介紹

    JavaScript設(shè)計模式之單件模式介紹

    這篇文章主要介紹了JavaScript設(shè)計模式之單件模式介紹,單件模式,就是靜態(tài)化的訪問中已經(jīng)實例化的對象,這個對象只能通過一個唯一的入口訪問,已經(jīng)實例或待實例化的對象,需要的朋友可以參考下
    2014-12-12
  • JS實現(xiàn)復(fù)制功能

    JS實現(xiàn)復(fù)制功能

    本文主要介紹了JS實現(xiàn)復(fù)制功能的實例,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-03-03
  • 使用Math.max,Math.min獲取數(shù)組中的最值實例

    使用Math.max,Math.min獲取數(shù)組中的最值實例

    下面小編就為大家?guī)硪黄褂肕ath.max,Math.min獲取數(shù)組中的最值實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • 現(xiàn)代配置YAML對比JSON優(yōu)勢分析

    現(xiàn)代配置YAML對比JSON優(yōu)勢分析

    這篇文章主要為大家介紹了關(guān)于現(xiàn)代配置指南中YAML對比JSON的優(yōu)勢分析說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • 小程序清理本地緩存的方法

    小程序清理本地緩存的方法

    這篇文章主要介紹了小程序清理本地緩存的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08

最新評論

钟山县| 延安市| 桂东县| 铁岭县| 高雄市| 武夷山市| 津市市| 论坛| 巴彦县| 屏边| 江安县| 军事| 乌拉特中旗| 溧阳市| 航空| 沈阳市| 池州市| 和平县| 锡林郭勒盟| 泽库县| 盐城市| 石棉县| 赞皇县| 广灵县| 景谷| 会宁县| 林甸县| 武穴市| 阳谷县| 昌宁县| 南涧| 小金县| 安福县| 克什克腾旗| 桑植县| 五常市| 巴楚县| 株洲县| 乌拉特中旗| 深水埗区| 南岸区|