javascript中 try catch用法
先看個(gè)實(shí)例
<input id='b1' type='button' value='按鈕'/>
<script>
window.onload=function(){
var oBtn=document.getElementById("b1");
function mto(){
alert("123");
};
try //非IE
{
oBtn.attachEvent("onclick",mto,false);
}
catch(e)//IE
{
oBtn.addEventListener("click",mto,false);
}
};
</script>
注意的是:
addEventListener和attachEvent的區(qū)別在第一個(gè)參數(shù) 前者是click 后者是onclick
addEventListener 在其元素所在的元素作用域中運(yùn)行
attachEvent在全局作用域中運(yùn)行(this=window)
Try...Catch 語(yǔ)句
try...catch 可以測(cè)試代碼中的錯(cuò)誤。try 部分包含需要運(yùn)行的代碼,而 catch 部分包含錯(cuò)誤發(fā)生時(shí)運(yùn)行的代碼。
語(yǔ)法:
try
{
//在此運(yùn)行代碼
}
catch(err)
{
//在此處理錯(cuò)誤
}
注意:try...catch 使用小寫(xiě)字母。大寫(xiě)字母會(huì)出錯(cuò)。
try...catch...finally 語(yǔ)句
為 JScript 實(shí)現(xiàn)錯(cuò)誤處理。
try {
tryStatements}
catch(exception){
catchStatements}
finally {
finallyStatements}
=============
參數(shù)
tryStatement
必選項(xiàng)??赡馨l(fā)生錯(cuò)誤的語(yǔ)句。
exception
必選項(xiàng)。任何變量名。exception 的初始化值是扔出的錯(cuò)誤的值。
catchStatement
可選項(xiàng)。處理在相關(guān)聯(lián)的 tryStatement 中發(fā)生的錯(cuò)誤的語(yǔ)句。
finallyStatements
可選項(xiàng)。在所有其他過(guò)程發(fā)生之后無(wú)條件執(zhí)行的語(yǔ)句。
說(shuō)明
try...catch...finally 語(yǔ)句提供了一種方法來(lái)處理可能發(fā)生在給定代碼塊中的某些或全部錯(cuò)誤,同時(shí)仍保持代碼的運(yùn)行。如果發(fā)生了程序員沒(méi)有處理的錯(cuò)誤,JScript 只給用戶(hù)提供它的普通錯(cuò)誤信息,就好象沒(méi)有錯(cuò)誤處理一樣。
tryStatements 參數(shù)包含可能發(fā)生錯(cuò)誤的代碼,而 catchStatement 則包含處理任何發(fā)生了的錯(cuò)誤的代碼。如果在 tryStatements 中發(fā)生了一個(gè)錯(cuò)誤,則程序控制被傳給 catchStatements 來(lái)處理。exception 的初始化值是發(fā)生在 tryStatements 中的錯(cuò)誤的值。如果錯(cuò)誤不發(fā)生,則不執(zhí)行 catchStatements。
如果在與發(fā)生錯(cuò)誤的 tryStatements 相關(guān)聯(lián)的 catchStatements 中不能處理該錯(cuò)誤,則使用 throw 語(yǔ)句來(lái)傳播、或重新扔出這個(gè)錯(cuò)誤給更高級(jí)的錯(cuò)誤處理程序。
在執(zhí)行完 tryStatements 中的語(yǔ)句,并在 catchStatements 的所有錯(cuò)誤處理發(fā)生之后,可無(wú)條件執(zhí)行 finallyStatements 中的語(yǔ)句。
請(qǐng)注意,即使在 try 或 catch 塊中返回一個(gè)語(yǔ)句,或在 catch 塊重新扔出一個(gè)錯(cuò)誤,仍然會(huì)執(zhí)行 finallyStatements 編碼。一般將確保 finallyStatments 的運(yùn)行,除非存在未處理的錯(cuò)誤。(例如,在 catch 塊中發(fā)生運(yùn)行時(shí)錯(cuò)誤。)。
示例
下面的例子闡明了JScript 特例處理是如何進(jìn)行的。
try {
print("Outer try running..");
try {
print("Nested try running...");
throw "an error";
}
catch(e) {
print("Nested catch caught " + e);
throw e + " re-thrown";
}
finally {
print("Nested finally is running...");
}
}
catch(e) {
print("Outer catch caught " + e);
}
finally {
print("Outer finally running");
}
// Windows Script Host 作出該修改從而得出 WScript.Echo(s)
function print(s){
document.write(s);
}
將得出以下結(jié)果:
Outer try running..
Nested try running...
Nested catch caught an error
Nested finally is running...
Outer catch caught an error re-thrown
Outer finally running
如下是Javascript的例外處理的一個(gè)實(shí)例。
var array = null;
try {
document.write(array[0]);
} catch(err) {
document.writeln("Error name: " + err.name + "");
document.writeln("Error message: " + err.message);
}
finally{
alert("object is null");
}
程序執(zhí)行過(guò)程
1. array[0]的時(shí)候由于沒(méi)有創(chuàng)建array數(shù)組,array是個(gè)空對(duì)象,程序中調(diào)用array[0]就會(huì)產(chǎn)生object is null的異常
2. catch(err)語(yǔ)句捕獲到這個(gè)異常通過(guò)err.name打印了錯(cuò)誤類(lèi)型,err.message打印了錯(cuò)誤的詳細(xì)信息.
3. finally類(lèi)似于java的finally,無(wú)論有無(wú)異常都會(huì)執(zhí)行.
現(xiàn)總結(jié)Error.name的六種值對(duì)應(yīng)的信息:
1. EvalError:eval()的使用與定義不一致
2. RangeError:數(shù)值越界
3. ReferenceError:非法或不能識(shí)別的引用數(shù)值
4. SyntaxError:發(fā)生語(yǔ)法解析錯(cuò)誤
5. TypeError:操作數(shù)類(lèi)型錯(cuò)誤
6. URIError:URI處理函數(shù)使用不當(dāng)
- js中的異常處理try...catch使用介紹
- JavaScript Try...Catch 聲明的 使用方法
- JS中用try catch對(duì)代碼運(yùn)行的性能影響分析
- 實(shí)例解析js中try、catch、finally的執(zhí)行規(guī)則
- javascript中的try catch異常捕獲機(jī)制用法分析
- 理解javascript中try...catch...finally
- JS異常處理try..catch語(yǔ)句的作用和實(shí)例
- 一分鐘學(xué)會(huì)JavaScript中的try-catch
- 聊聊Javascript中try catch的2個(gè)作用
- JS?try?catch用法舉例之異常處理
相關(guān)文章
懶就要懶到底——鼠標(biāo)自動(dòng)點(diǎn)擊(含時(shí)間判斷)
懶就要懶到底——鼠標(biāo)自動(dòng)點(diǎn)擊(含時(shí)間判斷)...2007-02-02
淺談bootstrap源碼分析之scrollspy(滾動(dòng)偵聽(tīng))
下面小編就為大家?guī)?lái)一篇淺談bootstrap源碼分析之scrollspy(滾動(dòng)偵聽(tīng))。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
javascript類(lèi)型系統(tǒng) Window對(duì)象學(xué)習(xí)筆記
這篇文章主要介紹了javascript類(lèi)型系統(tǒng)之Window對(duì)象,整理關(guān)于Window對(duì)象的學(xué)習(xí)筆記,感興趣的小伙伴們可以參考一下2016-01-01
ExtJs的Ext.Ajax.request實(shí)現(xiàn)waitMsg等待提示效果
這篇文章主要介紹了ExtJs的Ext.Ajax.request實(shí)現(xiàn)waitMsg等待提示效果,需要的朋友可以參考下2017-06-06
js利用遞歸與promise 按順序請(qǐng)求數(shù)據(jù)的方法
這篇文章主要介紹了js利用遞歸與promise 按順序請(qǐng)求數(shù)據(jù),需要的朋友可以參考下2019-08-08
JS實(shí)現(xiàn)點(diǎn)擊鏈接取消跳轉(zhuǎn)效果的方法
有時(shí)候我們僅僅希望將鏈接<a>作為一個(gè)按鈕使用,但是在默認(rèn)狀態(tài)下,點(diǎn)擊鏈接會(huì)出現(xiàn)跳轉(zhuǎn)效果,下面就通過(guò)代碼實(shí)例,介紹一下如何實(shí)現(xiàn)此效果2014-01-01
BootStrapTable 單選及取值的實(shí)現(xiàn)方法
學(xué)習(xí)bootstrapTable 一直沒(méi)有找到 單選框的選定的和取值的教程,接下來(lái)通過(guò)本文給大家分享BootStrapTable 單選及取值的實(shí)現(xiàn)方法,非常不錯(cuò),需要的朋友參考下2017-01-01
Js 代碼中,ajax請(qǐng)求地址后加隨機(jī)數(shù)防止瀏覽器緩存的原因
Js 代碼中,ajax請(qǐng)求地址后加隨機(jī)數(shù)防止瀏覽器緩存的原因,需要的朋友可以參考一下2013-05-05
JS利用Canvas實(shí)現(xiàn)文字水印和圖片水印合成
這篇文章主要為大家詳細(xì)介紹了JavaScript如何利用Canvas實(shí)現(xiàn)文字水印和圖片水印合成的效果,文中的示例代碼講解詳細(xì),需要的小伙伴可以參考一下2022-11-11
JS實(shí)現(xiàn)4位隨機(jī)驗(yàn)證碼
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)4位隨機(jī)驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-10-10

