1. 程式人生 > 程式設計 >JavaScript錯誤處理try..catch...finally+涵蓋throw+TypeError+RangeError

JavaScript錯誤處理try..catch...finally+涵蓋throw+TypeError+RangeError

目錄
  • 1.用途
  • 2.語法
  • 3.實操

1.用途

通常,如果發生錯誤,就會立即停止,並在控制檯將錯誤打印出來。

有了這個語句就可以捕獲錯誤並執行合理操作,可以讓程式繼續執行下去

2.語法

try {
  // 程式碼...
} catch (err) {
   //err是有關錯誤詳細資訊的物件
  // 錯誤捕獲,上面程式碼報錯就會轉到這個程式碼塊,而不會停止執行
} finally {
   //無論是否有異常丟擲或捕獲它總是執行
}

這種語句可以巢狀

3.實操

Catch 捕獲所有 error

如果我們不知道如何處理它,那我們就 throw err

throw 操作符會生成一個 error 物件。

用來丟擲一個使用者自定義的異常。當前函式的執行將被停止(throw之www.cppcns.com後的語句將不會執行),並且控制將被傳遞到呼叫堆疊中的第一個Catch塊。如果呼叫者函式中沒有catch塊,程式將會終止。

示例:

throw "Error1"; // 丟擲了一個值為字串的異常
throw 4;       // 丟擲了一個值為整數4的異常
 
/* 中有很多內建的標準 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
//on的異常
try {
  JSON.parse("{ bad json o_O }");
} catch(e) {
  alert(e.name); // SyntaxError
  alert(e.message); // Unhttp://www.cppcns.com
expecthttp://www.cppcns.comed token b in JSON at position 2 }

補充:

try塊的程式碼可能會丟擲三種異常:TypeErrorRangeErrorSyntaxError

有同學可能不知道這三個的意思,這裡說明下

這兩個都是全域性物件,全域性的物件本身不包含任何方法,然而它通過原型鏈繼承了一些方法.

instanceof 操作符用於判斷錯誤型別:

  • TypeError:(型別錯誤)物件用來表示值的型別非預期型別時發生的錯誤
  • RangeEr客棧ror: 物件標明一個錯誤,當一個值不在其所允許的範圍或者集合中
  • SyntaxError
    : 當script語言解析程式碼時,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錯誤處理內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!