📜  ES6-错误处理(1)

📅  最后修改于: 2023-12-03 15:00:37.375000             🧑  作者: Mango

ES6 错误处理

ES6 引入了一些新特性,让错误处理更加方便和可读性更高。本篇文章将介绍 ES6 中的错误处理方式,包括错误对象、try...catch 语句、finally 语句、Promise 的错误处理等。

错误对象

在 ES6 之前,JavaScript 中的错误对象只有 Error 对象,所有的错误都会被包装为 Error 对象类型。而在 ES6 中,新增了许多其他的错误对象,如:

  • TypeError
  • RangeError
  • ReferenceError
  • SyntaxError
  • URIError

每个错误对象都有自己特有的属性和方法,具体内容可以参考MDN文档

在 ES6 中,你可以通过继承 Error 对象来创建自己的错误对象。

例如:

class CustomError extends Error {
  constructor(message) {
    super(message);
    this.name = 'CustomError';
  }
}

你可以通过 throw 抛出自己的错误对象,并且在 catch 中捕获它。

例如:

try {
  throw new CustomError('This is a custom error.');
} catch (error) {
  console.error(error.name + ': ' + error.message);
}
try...catch 语句

try...catch 语句是用来捕获可能会导致异常的代码的关键字。当代码块中发生错误时,程序会停止执行,并跳转到 catch 代码块中执行。

例如:

try {
  console.log('Hello, world!');
  throw new Error('Something went wrong!');
  console.log('This will never be executed.');
} catch (error) {
  console.error(error.message);
}
finally 语句

finally 语句是 try..catch 语句中的一个可选结构,它在 try 结构中的语句没有引发异常的情况下和 catch 结构之后总是被执行。

例如:

try {
  console.log('Hello, world!');
} catch (error) {
  console.error(error.message);
} finally {
  console.log('This code will always be executed!');
}
Promise 的错误处理

在 ES6 中,Promise 提供了一种错误处理方式,它使得异步代码的错误处理更加可读性更强。

在 Promise 发生错误时,会跳转到 .catch() 方法中执行。.catch() 方法是 Promise 链中的一个特殊方法,它只接受一个参数,即错误对象,当 Promise 被 rejected 时,会执行 .catch() 方法,并将错误对象作为参数传递给 .catch()

例如:

Promise.reject(new Error('Something went wrong!'))
  .catch((error) => {
    console.error(error.message);
  });

上述代码中,我们使用 Promise.reject() 方法创建了一个 Promise 对象,并抛出一个错误对象,然后使用 .catch() 方法捕获了该错误对象。

结论

在 ES6 中,错误处理更加方便和可读性更高。新的错误对象使错误处理更加完善,try...catch 语句、finally 语句以及 Promise 提供了各自的错误处理方式,使得程序员能够更好地捕获和处理异常。