javascript中 try catch用法
先看個實例
<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ū)別在第一個參數(shù) 前者是click 后者是onclick
addEventListener 在其元素所在的元素作用域中運行
attachEvent在全局作用域中運行(this=window)
Try...Catch 語句
try...catch 可以測試代碼中的錯誤。try 部分包含需要運行的代碼,而 catch 部分包含錯誤發(fā)生時運行的代碼。
語法:
try { //在此運行代碼 } catch(err) { //在此處理錯誤 }
注意:try...catch 使用小寫字母。大寫字母會出錯。
try...catch...finally 語句
為 JScript 實現(xiàn)錯誤處理。
try { tryStatements} catch(exception){ catchStatements} finally { finallyStatements}
=============
參數(shù)
tryStatement
必選項??赡馨l(fā)生錯誤的語句。
exception
必選項。任何變量名。exception 的初始化值是扔出的錯誤的值。
catchStatement
可選項。處理在相關(guān)聯(lián)的 tryStatement 中發(fā)生的錯誤的語句。
finallyStatements
可選項。在所有其他過程發(fā)生之后無條件執(zhí)行的語句。
說明
try...catch...finally 語句提供了一種方法來處理可能發(fā)生在給定代碼塊中的某些或全部錯誤,同時仍保持代碼的運行。如果發(fā)生了程序員沒有處理的錯誤,JScript 只給用戶提供它的普通錯誤信息,就好象沒有錯誤處理一樣。
tryStatements 參數(shù)包含可能發(fā)生錯誤的代碼,而 catchStatement 則包含處理任何發(fā)生了的錯誤的代碼。如果在 tryStatements 中發(fā)生了一個錯誤,則程序控制被傳給 catchStatements 來處理。exception 的初始化值是發(fā)生在 tryStatements 中的錯誤的值。如果錯誤不發(fā)生,則不執(zhí)行 catchStatements。
如果在與發(fā)生錯誤的 tryStatements 相關(guān)聯(lián)的 catchStatements 中不能處理該錯誤,則使用 throw 語句來傳播、或重新扔出這個錯誤給更高級的錯誤處理程序。
在執(zhí)行完 tryStatements 中的語句,并在 catchStatements 的所有錯誤處理發(fā)生之后,可無條件執(zhí)行 finallyStatements 中的語句。
請注意,即使在 try 或 catch 塊中返回一個語句,或在 catch 塊重新扔出一個錯誤,仍然會執(zhí)行 finallyStatements 編碼。一般將確保 finallyStatments 的運行,除非存在未處理的錯誤。(例如,在 catch 塊中發(fā)生運行時錯誤。)。
示例
下面的例子闡明了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的例外處理的一個實例。
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í)行過程
1. array[0]的時候由于沒有創(chuàng)建array數(shù)組,array是個空對象,程序中調(diào)用array[0]就會產(chǎn)生object is null的異常
2. catch(err)語句捕獲到這個異常通過err.name打印了錯誤類型,err.message打印了錯誤的詳細(xì)信息.
3. finally類似于java的finally,無論有無異常都會執(zhí)行.
現(xiàn)總結(jié)Error.name的六種值對應(yīng)的信息:
1. EvalError:eval()的使用與定義不一致
2. RangeError:數(shù)值越界
3. ReferenceError:非法或不能識別的引用數(shù)值
4. SyntaxError:發(fā)生語法解析錯誤
5. TypeError:操作數(shù)類型錯誤
6. URIError:URI處理函數(shù)使用不當(dāng)
相關(guān)文章
Javascript摸擬自由落體與上拋運動原理與實現(xiàn)方法詳解
這篇文章主要介紹了Javascript摸擬自由落體與上拋運動,結(jié)合實例形式分析了Javascript摸擬自由落體與上拋運動相關(guān)原理、實現(xiàn)技巧與操作注意事項,需要的朋友可以參考下2020-04-04詳解js模板引擎art template數(shù)組渲染的方法
art-template 是一個簡約、超快的模板引擎。這篇文章主要介紹了詳解js模板引擎art template數(shù)組渲染的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10js實現(xiàn)鼠標(biāo)移到鏈接文字彈出一個提示層的方法
這篇文章主要介紹了js實現(xiàn)鼠標(biāo)移到鏈接文字彈出一個提示層的方法,涉及javascript鼠標(biāo)事件與css樣式的相關(guān)技巧,需要的朋友可以參考下2015-05-05JavaScript瀏覽器對象模型BOM(BrowserObjectModel)實例詳解
這篇文章主要介紹了JavaScript瀏覽器對象模型BOM(BrowserObjectModel),結(jié)合實例形式較為詳細(xì)的分析了BOM模型的常用對象與相關(guān)使用技巧,需要的朋友可以參考下2016-11-11JavaScript中實現(xiàn)鍵值對應(yīng)的字典與哈希表結(jié)構(gòu)的示例
字典或者哈希表這樣的鍵值對應(yīng)結(jié)構(gòu)在其他很多語言中都有內(nèi)置,非常好用,這里我們來看一下JavaScript中實現(xiàn)鍵值對應(yīng)的字典與哈希表結(jié)構(gòu)的示例:2016-06-06