以下内容为学习记录,可以参考 MDN 原文。
通过 Error 的构造器可以创建一个错误对象。当运行时错误产生时,Error 的实例对象会被抛出。Error 对象也可用于用户自定义的异常的基础对象。
当像函数一样使用 Error 时,如果没有 new,它将返回一个 Error 对象。所以, 仅仅调用 Error 产生的结果与通过 new 关键字构造 Error 对象生成的结果相同。
// this:
const x = Error(‘I was created using a function call!‘);
????// has the same functionality as this:
const y = new Error(‘I was constructed via the "new" keyword!‘);
异常的名称
try {
throw new Error("Whoops!");
} catch (e) {
console.log(e.name + ": " + e.message);
}
// Error: Whoops!
异常信息
try {
throw new Error("Whoops!");
} catch (e) {
console.log(e.name + ": " + e.message);
}
// Error: Whoops!
valueOf() 方法返回当前 symbol 对象所包含的 symbol 原始值。覆盖 Object.prototype.valueOf() 方法。
Object(Symbol("foo")) + "bar";
// TypeError: can‘t convert symbol object to primitive
// 无法隐式的调用 valueOf() 方法
Object(Symbol("foo")).valueOf() + "bar";
// TypeError: can‘t convert symbol to string
// 手动调用 valueOf() 方法,虽然转换成了原始值,但 symbol 原始值不能转换为字符串
Object(Symbol("foo")).toString() + "bar";
// "Symbol(foo)bar",需要手动调用 toString() 方法才行
除了通用的Error构造函数外,JavaScript还有其他类型的错误构造函数。
创建一个 error 实例,表示错误的原因:与 eval() 有关。
创建一个代表Javascript引擎内部错误的异常抛出的实例。 如: "递归太多"。
创建一个error实例,表示错误的原因:数值变量或参数超出其有效范围。
创建一个error实例,表示错误的原因:无效引用。
创建一个error实例,表示错误的原因:eval()在解析代码的过程中发生的语法错误。
创建一个error实例,表示错误的原因:变量或参数不属于有效类型。
创建一个error实例,表示错误的原因:给 encodeURI()或 decodeURl()传递的参数无效。
当多个错误??需要包装在一个错误中时,AggregateError 对象表示一个错误。
原文:https://www.cnblogs.com/jiangbo44/p/13521056.html