說明
try...catch...finally 語句提供了一種方法來處理可能發(fā)生在給定代碼塊中的某些或全部錯(cuò)誤,同時(shí)仍保持代碼的運(yùn)行。如果發(fā)生了程序員沒有處理的錯(cuò)誤,JScript 只給用戶提供它的普通錯(cuò)誤信息,就好象沒有錯(cuò)誤處理一樣。
tryStatements 參數(shù)包含可能發(fā)生錯(cuò)誤的代碼,而 catchStatement 則包含處理任何發(fā)生了的錯(cuò)誤的代碼。如果在 tryStatements 中發(fā)生了一個(gè)錯(cuò)誤,則程序控制被傳給 catchStatements 來處理。exception 的初始化值是發(fā)生在 tryStatements 中的錯(cuò)誤的值。如果錯(cuò)誤不發(fā)生,則不執(zhí)行 catchStatements。
如果在與發(fā)生錯(cuò)誤的 tryStatements 相關(guān)聯(lián)的 catchStatements 中不能處理該錯(cuò)誤,則使用 throw 語句來傳播、或重新扔出這個(gè)錯(cuò)誤給更高級(jí)的錯(cuò)誤處理程序。
在執(zhí)行完 tryStatements 中的語句,并在 catchStatements 的所有錯(cuò)誤處理發(fā)生之后,可無條件執(zhí)行 finallyStatements 中的語句。
請(qǐng)注意,即使在 try 或 catch 塊中返回一個(gè)語句,或在 catch 塊重新扔出一個(gè)錯(cuò)誤,仍然會(huì)執(zhí)行 finallyStatements 編碼。一般將確保 finallyStatments 的運(yùn)行,除非存在未處理的錯(cuò)誤。(例如,在 catch 塊中發(fā)生運(yùn)行時(shí)錯(cuò)誤。)。
示例
下面的例子闡明了JScript 特例處理是如何進(jìn)行的。
將得出以下結(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í)例。
程序執(zhí)行過程
1. array[0]的時(shí)候由于沒有創(chuàng)建array數(shù)組,array是個(gè)空對(duì)象,程序中調(diào)用array[0]就會(huì)產(chǎn)生object is null的異常
2. catch(err)語句捕獲到這個(gè)異常通過err.name打印了錯(cuò)誤類型,err.message打印了錯(cuò)誤的詳細(xì)信息.
3. finally類似于java的finally,無論有無異常都會(huì)執(zhí)行.現(xiàn)總結(jié)Error.name的六種值對(duì)應(yīng)的信息:
1. EvalError:eval()的使用與定義不一致
2. RangeError:數(shù)值越界
3. ReferenceError:非法或不能識(shí)別的引用數(shù)值
4. SyntaxError:發(fā)生語法解析錯(cuò)誤
5. TypeError:操作數(shù)類型錯(cuò)誤
6. URIError:URI處理函數(shù)使用不當(dāng)聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com