JavaScript中不同类型的错误
在 JavaScript 中,错误(Error)是程序运行时发生的异常情况。JavaScript 提供了多种内置错误类型,每种错误类型都有特定的用途。以下是常见的错误类型及其示例:
1. Error
Error
是所有错误类型的基类,通常用于自定义错误。
示例:
throw new Error("这是一个自定义错误");
2. SyntaxError
SyntaxError
表示语法错误,通常是由于代码不符合 JavaScript 语法规则。
示例:
// 缺少括号
if (true {
console.log("Hello");
}
// 报错: SyntaxError: Unexpected token '{'
3. ReferenceError
ReferenceError
表示引用错误,通常是由于访问未定义的变量或函数。
示例:
console.log(undefinedVariable);
// 报错: ReferenceError: undefinedVariable is not defined
4. TypeError
TypeError
表示类型错误,通常是由于操作不符合预期的类型。
示例:
const num = 123;
num.toUpperCase();
// 报错: TypeError: num.toUpperCase is not a function
5. RangeError
RangeError
表示范围错误,通常是由于数值超出有效范围。
示例:
const arr = new Array(-1);
// 报错: RangeError: Invalid array length
6. URIError
URIError
表示 URI 处理错误,通常是由于 encodeURI
或 decodeURI
等函数使用不当。
示例:
decodeURI("%");
// 报错: URIError: URI malformed
7. EvalError
EvalError
表示 eval
函数使用错误。在现代 JavaScript 中,此错误已很少见。
示例:
throw new EvalError("eval 函数使用错误");
8. AggregateError
AggregateError
表示多个错误的集合,通常与 Promise.any
或 Promise.allSettled
一起使用。
示例:
Promise.any([
Promise.reject(new Error("错误 1")),
Promise.reject(new Error("错误 2"))
]).catch(error => {
console.log(error instanceof AggregateError); // true
});
9. 自定义错误
可以通过继承 Error
类创建自定义错误类型。
示例:
class CustomError extends Error {
constructor(message) {
super(message);
this.name = "CustomError";
}
}
throw new CustomError("这是一个自定义错误");
10. 错误处理
使用 try...catch
语句捕获和处理错误。
示例:
try {
throw new TypeError("类型错误");
} catch (error) {
if (error instanceof TypeError) {
console.log("捕获到 TypeError:", error.message);
} else {
console.log("捕获到其他错误:", error.message);
}
}
总结
错误类型 | 描述 | 示例 |
---|---|---|
Error | 通用错误 | new Error("自定义错误") |
SyntaxError | 语法错误 | if (true { |
ReferenceError | 引用错误 | console.log(undefinedVar) |
TypeError | 类型错误 | 123.toUpperCase() |
RangeError | 范围错误 | new Array(-1) |
URIError | URI 处理错误 | decodeURI("%") |
EvalError | eval 函数错误 | throw new EvalError() |
AggregateError | 多个错误的集合 | Promise.any([...]) |
自定义错误 | 继承Error 的自定义错误 | class CustomError extends Error |
理解这些错误类型及其用途,有助于更好地调试和处理 JavaScript 程序中的异常情况。
更多vue相关插件及后台管理模板可访问vue admin reference,代码详情请访问github