以下是一些常见的 JavaScript 异常类型及其使用场景的详细说明:
1.Error
try {
// 可能抛出异常的代码
} catch (error) {
console.error(error);
}
这是最常见的异常类型,表示程序中出现了未处理的错误。当出现错误时,会创建一个 Error 对象并将其抛出。Error 对象包含一个描述错误信息的 message 属性以及一些其他属性。
2.TypeError
try {
// 可能抛出TypeError的代码
} catch (error) {
if (error instanceof TypeError) {
console.error('TypeError: ', error.message);
}
}
当变量或表达式不是预期类型时,会抛出 TypeError。例如,将一个非数字作为数组的下标传递给数组的 [] 运算符,或者调用一个未定义的函数,都会抛出 TypeError。
3.RangeError
try {
// 可能抛出RangeError的代码
} catch (error) {
if (error instanceof RangeError) {
console.error('RangeError: ', error.message);
}
}
当数值型变量或表达式的值超出了有效范围时,会抛出 RangeError。例如,将一个大于 Number.MAX_SAFE_INTEGER 的数字转换为整数,或者使用 Math.sqrt 计算负数,都会抛出 RangeError。
4.SyntaxError
try {
// 可能抛出SyntaxError的代码
} catch (error) {
if (error instanceof SyntaxError) {
console.error('SyntaxError: ', error.message);
}
}
当 JavaScript 代码包含无效的语法时,会抛出 SyntaxError。例如,代码中存在未定义的变量或函数、括号不匹配、缺少分号等语法错误,都会抛出 SyntaxError。
5.ReferenceError
try {
// 可能抛出ReferenceError的代码
} catch (error) {
if (error instanceof ReferenceError) {
console.error('ReferenceError: ', error.message);
}
}
当引用不存在的变量或对象时,会抛出 ReferenceError。例如,尝试使用一个未定义的变量,或者引用一个未声明的变量,都会抛出 ReferenceError。
6.URIError
try {
// 可能抛出URIError的代码
} catch (error) {
if (error instanceof URIError) {
console.error('URIError: ', error.message);
}
}
当全局 URI 处理函数被误用时,会抛出 URIError。例如,使用不符合 URI 格式的字符串作为 encodeURI 或 decodeURI 函数的参数,都会抛出 URIError。