当程序或一段代码中出现错误或意外情况时,把错误报告出来是很有用的。
错误是 JavaScript 对象。
这个对象的主要属性是 message:
const error = new Error('Oops, something went wrong');
console.log(error.message);
// => "Oops, something went wrong"
使用 throw 语法,你可以抛出一个 Error。
throw new Error('Oops');
当错误被抛出时,当前的执行会停止,并在调用栈的第一个 catch 块中继续。
try {
throw new Error('Oops');
} catch (error) {
console.log(error.message);
// => "Oops"
}
与 JavaScript 中的任何类一样,子类可以使用 extends 关键字继承 Error,从而创建自定义错误。
instanceof 语法会检查捕获到的错误是否是 Error 某个特定子类的实例。
class CustomError extends Error {}
try {
// ... Code that may throw an error
} catch (error) {
if (error instanceof CustomError) {
console.log('The error thrown is an instance of the CustomError');
}
}
除了 Error 对象之外,还存在其他内置的错误对象。你可以在这里了解更多。
你也可以创建一个继承自某个内置错误类型的类,来定义自己的自定义错误类型
class MyCustomError extends Error {}
虽然 throw 语法通常用来抛出 Error 对象,但 JavaScript 很灵活,允许你抛出 string、null 或任何原始类型。
虽然这在 JavaScript 中并非标准做法,但大多数 JavaScript 环境都在 Error 对象上实现了 stack 属性,让你可以获取所抛出错误的堆栈追踪。