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;
}
类型错误
假如您使用的值不在期望值的范围之内,则 TypeError 被抛出:
实例:
var num = 1;
try {
num.toUpperCase(); // 您无法将数字转换为大写
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
URI 错误
假如您在 URI 函数中使用非法字符,则 URIError 被抛出:
实例:
try {
decodeURI("%%%"); // 您无法对这些百分号进行 URI 编码
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}