📅  最后修改于: 2023-12-03 15:00:37.375000             🧑  作者: Mango
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
语句是用来捕获可能会导致异常的代码的关键字。当代码块中发生错误时,程序会停止执行,并跳转到 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
语句是 try..catch
语句中的一个可选结构,它在 try
结构中的语句没有引发异常的情况下和 catch
结构之后总是被执行。
例如:
try {
console.log('Hello, world!');
} catch (error) {
console.error(error.message);
} finally {
console.log('This code will always be executed!');
}
在 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 提供了各自的错误处理方式,使得程序员能够更好地捕获和处理异常。