js中Error對象

js中錯誤對象包括Error、EvalError、InternalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError。

通過Error的構造器可以創建一個錯誤對象。當運行時錯誤產生時,Error的實例對象會被拋出。Error對象也可用於用戶自定義的異常的基礎對象。下面列出了各種內建的標準錯誤類型。

語法

new Error([message[, fileName[,lineNumber]]])

參數

message

可選。人類可閱讀的錯誤描述信息。

fileName 

可選。被創建的Error對象的fileName屬性值。默認是調用Error構造器代碼所在的文件 的名字。

lineNumber 

可選。被創建的Error對象的lineNumber屬性值。默認是調用Error構造器代碼所在的文件的行號。

當像函數一樣使用 Error 時 -- 如果沒有 new,它將返回一個 Error 對象。所以, 僅僅調用 Error 產生的結果與通過new 關鍵字構造 Error 對象生成的結果相同。 

// this:
const x = Error('I was created using a function call!');
​​​​// has the same functionality as this:
const y = new Error('I was constructed via the "new" keyword!');

除了通用的Error構造函數外,JavaScript還有6個其他類型的錯誤構造函數,這6種都是繼承了Error

 EvalError
      創建一個error實例,表示錯誤的原因:與 eval() 有關。
InternalError 
      創建一個代表Javascript引擎內部錯誤的異常拋出的實例。 如: "遞歸太多".
RangeError
      創建一個error實例,表示錯誤的原因:數值變量或參數超出其有效範圍。
ReferenceError
      創建一個error實例,表示錯誤的原因:無效引用。
SyntaxError
      創建一個error實例,表示錯誤的原因:eval()在解析代碼的過程中發生的語法錯誤。
TypeError
      創建一個error實例,表示錯誤的原因:變量或參數不屬於有效類型。
URIError
      創建一個error實例,表示錯誤的原因:給 encodeURI()或  decodeURl()傳遞的參數無效。

共同點是都可以在對象原型下添加自定義屬性

可以取出來的參數有 message 和 stack 堆棧和name屬性

try{
 bucunzaihanshu()  // 不存在函數必會報錯
}catch(e){
 //TODO handle the exception
 console.log(e.message);
 console.log(e.stack);
}

try {
  throw new EvalError('Hello');
} catch (e) {
  console.log(e instanceof EvalError); // true
  console.log(e.message);              // "Hello"
  console.log(e.name);                 // "EvalError"
  console.log(e.stack);                // "@Scratchpad/2:2:9\n"
}

其他就不舉例了。

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章