JavaScript錯誤處理try..catch…finally+涵蓋throw+TypeError+RangeError
1.用途
通常,如果發生錯誤,腳本就會立即停止,並在控制臺將錯誤打印出來。
有瞭這個語句就可以捕獲錯誤並執行合理操作,可以讓程序繼續執行下去
2.語法
try { // 代碼... } catch (err) { //err是有關錯誤詳細信息的對象 // 錯誤捕獲,上面代碼報錯就會轉到這個代碼塊,而不會停止運行 } finally { //無論是否有異常拋出或捕獲它總是執行 }
這種語句可以嵌套
3.實操
Catch
捕獲所有 error
。
如果我們不知道如何處理它,那我們就 throw err
。
throw
操作符會生成一個 error
對象。
用來拋出一個用戶自定義的異常。當前函數的執行將被停止(throw之後的語句將不會執行),並且控制將被傳遞到調用堆棧中的第一個Catch塊。如果調用者函數中沒有catch塊,程序將會終止。
示例:
throw "Error1"; // 拋出瞭一個值為字符串的異常 throw 4; // 拋出瞭一個值為整數4的異常 /*JavaScript 中有很多內建的標準 error 的構造器:Error,SyntaxError,ReferenceError,TypeError 等。我們也可以使用它們來創建 error 對象。*/ let error = new Error("Things happen o_O"); alert(error.name); // Error alert(error.message); // Things happen o_O //json的異常 try { JSON.parse("{ bad json o_O }"); } catch(e) { alert(e.name); // SyntaxError alert(e.message); // Unexpected token b in JSON at position 2 }
補充:
try塊的代碼可能會拋出三種異常:TypeError
,RangeError
,SyntaxError
有同學可能不知道這三個的意思,這裡說明下
這兩個都是全局對象,全局的對象本身不包含任何方法, 然而它通過原型鏈繼承瞭一些方法.
instanceof 操作符用於判斷錯誤類型:
TypeError
:(類型錯誤)對象用來表示值的類型非預期類型時發生的錯誤RangeError
: 對象標明一個錯誤,當一個值不在其所允許的范圍或者集合中SyntaxError
: 當Javascript語言解析代碼時,Javascript引擎發現瞭不符合語法規范的tokens或token順序時拋出
實例:
catch (e) {//以下是這個對象的參數屬性 console.log(e instanceof TypeError); // true console.log(e.message); // "描述此錯誤" console.log(e.name); // "TypeError" console.log(e.fileName); // "引起該異常的代碼所在的文件的名字" console.log(e.lineNumber); // 引起該異常的代碼的行號 }
到此這篇關於JavaScript錯誤處理try..catch…finally+涵蓋throw+TypeError+RangeError的文章就介紹到這瞭,更多相關JavaScript錯誤處理內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- JavaScript錯誤處理機制全面分析講解
- 詳解JavaScript錯誤捕獲
- 簡單聊聊Js中的常見錯誤類型
- JavaScript高級之自定義異常
- 詳解JSON.parse和JSON.stringify用法