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"
}
其他就不舉例了。
收