错误类型
EvalError
创建一个 error 实例,表示错误的原因:与 eval() 有关。
RangeError
创建一个 error 实例,表示错误的原因:数值变量或参数超出其有效范围。
试图将一个值作为参数传递给一个允许的范围不包含该值的函数会引发 RangeError。
在以下的情况中,可能会遇到这个问题:
- 将不允许的字符串值传递给
String.prototype.normalize()
- 尝试使用 Array 构造函数创建一个具有不合法的长度的字符串
- 传递错误值到数值计算方法(
Number.toExponential()
、Number.toFixed()
或Number.toPrecision()
)。
ReferenceError
创建一个 error 实例,表示错误的原因:无效引用。
当一个不存在(或尚未初始化)的变量被引用时发生的错误
var hello = world
// world in not defined
SyntaxError
创建一个 error 实例,表示错误的原因:语法错误。
对象代表尝试**解析不符合语法的代码的错误。**当 Javascript 引擎解析代码时,遇到了不符合语法规范的标记(token)或标记顺序,则会抛出 SyntaxError。
try {
eval("hoo bar");
} catch (e) {
console.error(e instanceof SyntaxError);
}
TypeError
创建一个 error 实例,表示错误的原因:变量或参数不属于有效类型。
对象通常(但并不只是)用来表示值的类型非预期类型时发生的错误。
以下情况会抛出 TypeError:
- 传递给运算符的操作数或传递给函数的参数与预期的类型不兼容;
- 尝试修改无法更改的值;
- 尝试以不适当的方法使用一个值。
URIError
创建一个 error 实例,表示错误的原因:给 encodeURI() 或 decodeURI() 传递的参数无效。
AggregateError
创建一个 error 实例,其中包裹了由一个操作产生且需要报告的多个错误。如:Promise.any() 产生的错误。