JavaScript 擁有當錯誤發生時提供錯誤資訊的内置 error 對象。error 對象提供兩個有用的屬性:name 和 message。
Error 對象屬性
屬性 | 描述 |
name | 設定或傳回錯誤名 |
message | 設定或傳回錯誤消息(一條字元串) |
Error對象的Name屬性的值Values
error 的 name 屬性可傳回六個不同的值:
錯誤名 | 描述 |
EvalError | 已在 eval() 函數中發生的錯誤 |
RangeError | 已發生超出數字範圍的錯誤 |
ReferenceError | 已發生非法引用 |
SyntaxError | 已發生文法錯誤 |
TypeError | 已發生類型錯誤 |
URIError | 在 encodeURI() 中已發生的錯誤 |
Eval 錯誤
EvalError 訓示 eval() 函數中的錯誤。
更新版本的 JavaScript 不會抛出任何 EvalError。請使用 SyntaxError 代替。
範圍錯誤
RangeError 會在您使用了合法值的範圍之外的數字時抛出。
例如:您不能将數字的有效位數設定為 500。
執行個體:
var num = 1;
try {
num.toPrecision(500); // 數無法擁有 500 個有效數
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
引用錯誤
假如您使用(引用)了尚未聲明的變量,則 ReferenceError 會被抛出:
執行個體:
var x;
try {
x = y + 1; // y 無法被引用(使用)
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
文法錯誤
假如您計算帶文法錯誤的代碼,會 SyntaxError 被抛出:
執行個體:
try {
eval("alert('Hello)"); // 缺少 ' 會産生錯誤
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
類型錯誤
var num = 1;
try {
num.toUpperCase(); // 您無法将數字轉換為大寫
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
URI 錯誤
try {
decodeURI("%%%"); // 您無法對這些百分号進行 URI 編碼
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}