ECMAScript 2021 中的 AggregateError:如何更好地处理多个错误

阅读时长 5 分钟读完

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

纠错
反馈