ECMAScript 2021 中的 AggregateError:如何更好地处理多个错误
ECMAScript 2021 引入了 AggregateError 这个新的错误类型,它可以更好地处理多个错误。在之前的版本中,当你需要在一个函数中抛出多个错误时,你只能选择抛出其中一个错误并忽略其他的错误,但这显然很不方便,因为你可能会丢失一些非常重要的错误信息。AggregateError 就是为了解决这个问题而生的。
AggregateError 必须至少包含两个错误,可以使用数组来传递这些错误。例如,一个函数可能需要几个异步操作,如果其中一个操作失败了,那么这个函数应该抛出一个 AggregateError 来包含所有的错误。
下面是一个使用 AggregateError 的示例:
-- -------------------- ---- ------- ----- -------- ----------------------- - --- - ----- -------- - ---------------- -- ------------ ----- --------- - ----- ---------------------- ----- ------- - ----- ----------------------------- -- ------------- ------ -------- - ----- -------- - ----- --- ---------------------- ------- -- ----- -------- ------- - - ------------------------------------------------------------ ---------------------------------------------- ---------- -- ------------------ ------------- -- ---------------------
在上面的示例中,我们传递了两个 URL 来获取数据。我们可以通过 Promise.all 来处理多个异步操作,但是如果其中一个操作失败了,我们就必须抛出一个错误。在这种情况下,我们将使用 AggregateError 来包含所有的错误,以便我们可以在后续处理中查看所有错误。
当我们运行这个代码时,我们会得到以下输出:
-- -------------------- ---- ------- --------------- ------ -- ----- -------- ---- -- ------------- ----------------------- -- ------------------------- -------------------------------------- -- ----- --------------------- -- ----- ----------- ------ -- -- ----- ------------- ----------------------- -- ----- ------------------ ----------------------- - ------- - ----------- ------- -- ------------------------------------------ ------- ------- ------- ------------ ------------- -- ------------------------- ----------------------- -- ------------------ ------------------ -- -------------------------- ----------------------- -- ----------- ------------------ -- ----------- ---------------------------------- -- ------------------- ---------------------------------- -- ------------------------- --------------------------------------- ----------- ------- -- ------------------------------------------ ------- ------- ------- ------------ ------------- -- ------------------------- ----------------------- -- ------------------ ------------------ -- -------------------------- ----------------------- -- ----------- ------------------ -- ----------- ---------------------------------- -- ------------------- ---------------------------------- -- ------------------------- --------------------------------------- - -
在这个示例中,我们看到了使用 AggregateError 包含两个 FetchError。我们还可以看到使用 throw 抛出了 AggregateError,以便我们可以在调用 fetchMultiple 的地方进行捕获和处理。
总结一下,AggregateError 是一个非常有用的新工具,可以让我们更好地处理多个错误。我们可以使用它来包含多个错误,以便我们能够在后续处理中查看所有错误,并由此编写更健壮的代码。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a8c58748841e98945266ff