日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript 异常处理

發(fā)布時間:2025/7/14 javascript 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript 异常处理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
異常處理概述
在代碼的運行過程中,錯誤是不可避免的,總的來說,錯誤發(fā)生于兩種情況:一是程序內(nèi)部的邏輯或者語法錯誤,二是運行環(huán)境或者用戶輸入中不可預(yù)知的數(shù)據(jù)造成的錯誤。對于前者,就稱之為錯誤(error),可以通過調(diào)試程序來解決;而后一種則更多的稱之為異常(exception),顧名思義,就是超出常規(guī),沒有按程序設(shè)計的意愿來輸入數(shù)據(jù)。當(dāng)然,異常還會有許多種類型。
所以說,異常并不等價于錯誤,相反,有時還會利用異常來解決一些問題。JavaScript可以捕獲一個異常并進(jìn)行相應(yīng)的處理,從而避免了瀏覽器向用戶報錯。

使用try-catch-finally處理異常
用戶可以使用該結(jié)構(gòu)處理可能發(fā)生異常的代碼,如果發(fā)生異常,則由catch捕獲并進(jìn)行處理,其語法如下:
try{
?????? //要執(zhí)行的代碼
}
catch(e){
?????? //處理異常的代碼
}
finally{
?????? //無論異常發(fā)生與否,都會執(zhí)行的代碼
}
通過異常處理,可以避免程序停止運行,從而具有了一定的自我修復(fù)能力。
在Ajax開發(fā)中,利用異常處理的一個典型應(yīng)用就是創(chuàng)建XMLHttpRequest對象,不同瀏覽器創(chuàng)建它的方式是不一樣的,為了使代碼能夠跨瀏覽器運行,就可以利用異常,一種方法不行,再用另一種方法,直到不發(fā)生異常為止,例如:
<script language="JavaScript" type="text/javascript">
<!--
var xmlhttp;
try{
????? //嘗試用IE瀏覽器的方式創(chuàng)建XMLHttpRequest對象
????? xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
????? try{
?????????? //嘗試用非IE瀏覽器的方式常見XMLHttpRequest對象
?????????? xmlhttp=new XMLHttpRequest();
????? }catch(e){}
}
//-->
</script>
通過這種方式,就可以跨瀏覽器創(chuàng)建XMLHttpRequest對象。注意,即使不在catch塊內(nèi)進(jìn)行處理,catch標(biāo)識及其參數(shù)e也是必須寫的,否則會產(chǎn)生語法錯誤,而finnally則不是必須的。

使用throw語句拋出異常
在JavaScript中有其內(nèi)部的異常機制,在遇到非法操作時能自動拋出異常。實際的開發(fā)中,隨著程序的復(fù)雜,需要能自己實現(xiàn)異常,這可以通過throw語句來實現(xiàn):
throw value;
其中value就是要拋出的異常變量,它可以是JavaScript中的任何一種類型。但在JavaScript內(nèi)部的異常中,異常參數(shù)(即catch(e)中的e)是一個名為error的對象,可以通過new Error(message)來創(chuàng)建這個對象,異常的描述被作為error對象的一個屬性message,可以由構(gòu)造函數(shù)傳入,也可以之后賦值。通過這個異常描述message,可以讓程序獲取異常的詳細(xì)信息,從而自動處理。
下面的程序計算兩個數(shù)據(jù)的和,如果參數(shù)不是數(shù)字,則拋出異常,代碼如下:
<script language="JavaScript" type="text/javascript">
<!--
//函數(shù)默認(rèn)要求參數(shù)為數(shù)字
function sum(a,b){
????? a=parseInt(a);
????? b=parseInt(b);
????? //如果a或b不能轉(zhuǎn)換為數(shù)字則拋出一個異常對象
????? if(isNaN(a) || isNaN(b)){
????????????? throw new Error("arguments are not numbers");
????? }
????? return a+b;
}

try{
????? //錯誤的調(diào)用
????? var s=sum("c","d");
}catch(e){
????? //顯示異常的詳細(xì)信息
????? alert(e.message);
}
//-->
</script>
程序中使用字母作為參數(shù)傳遞給sum函數(shù),是錯誤的,所以函數(shù)內(nèi)拋出了一個異常對象,這個對象被catch語句獲取,并使用alert語句顯示了其詳細(xì)信息。

圖7.10顯示了異常信息的內(nèi)容。


注意:使用new Error(message)創(chuàng)建異常對象只是一種默認(rèn)的習(xí)慣,也是內(nèi)置異常的實現(xiàn)方式。這不是必需的,完全可以拋出任意數(shù)據(jù)類型的異常,例如一個整數(shù),來作為異常的描述。只要在程序中拋出異常和捕獲異常能匹配即可。

Error對象除了message屬性以外,還有一些其他的屬性,這些屬性因瀏覽器而異,例如:在IE瀏覽器中,error對象的屬性包括name、number、description、message;而在Firefox瀏覽器中,error對象的屬性包括message、fileName、lineNumber、stack、name。在實際的應(yīng)用中如果要實現(xiàn)自己的異常,這些屬性只要被賦值,都是可用的,其中Firefox瀏覽器還會自動對stack屬性賦值,用于顯示異常出現(xiàn)的位置。

轉(zhuǎn)載于:https://www.cnblogs.com/dubingw2008/archive/2007/07/02/803261.html

總結(jié)

以上是生活随笔為你收集整理的JavaScript 异常处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。