npm 包 express-err 使用教程

阅读时长 5 分钟读完

介绍

express-err 是一个 Node.js Express 应用中全局异常处理的 npm 包。它可以方便地实现对 Express 应用程序中所有未捕获异常的集中处理并返回错误信息,同时可以自定义错误处理函数。

安装

在命令行中执行以下命令安装 express-err

使用方法

在代码中引入 express-err,并将其作为中间件使用。通常将 express-err 放在所有路由和其他中间件的后面,以确保能够捕捉到所有未处理的异常。

-- -------------------- ---- -------
----- ------- - -------------------
----- --- - ----------
----- ---------- - -----------------------

-- ---------
-------- ----------------- ---- ---- ----- -
  -------------------------
  ---------------------- -------- --------- ------ ------ ---
-

------------------------

-- -- ----------- ---
----------------------------------

-- --------
------------ -------- ----- ---- -
  ---------- -------- ------ ------- ---
---

-- -----
---------------- -------- -- -
  -------------------- --- --------- -- ---- --------
---

当代码中发生异常时,express-err 会捕捉到它,调用自定义错误处理函数。

自定义错误处理函数

上述例子中,我们可以看到 express-err 使用了一个默认的错误处理函数,但是我们也可以使用自己的错误处理函数。下面是一个根据错误类型返回不同状态码的自定义错误处理函数。

-- -------------------- ---- -------
-------- ----------------- ---- ---- ----- -
  -------------------------

  -- ---- ---------- ------------ -
    ---------------------- -------- ---- -------- ---
  - ---- -- ---- ---------- -------------- -
    ---------------------- -------- ---- ------ ---
  - ---- -
    ---------------------- -------- --------- ------ ------ ---
  -
-

自定义错误处理函数需要接受四个参数:错误对象、请求对象、响应对象和下一个中间件的回调函数。

错误类型

express-err 支持以下几种错误类型:

  • Error:通用的错误类型,表示未知错误。
  • NotFoundError:请求的资源未找到。
  • BadRequestError:请求数据不符合要求,例如缺少必要参数或参数格式不正确。

示例

-- -------------------- ---- -------
----- ------- - -------------------
----- --- - ----------
----- ---------- - -----------------------

----- ------------- ------- ----- --
----- --------------- ------- ----- --

-------- ----------------- ---- ---- ----- -
  -------------------------

  -- ---- ---------- ------------ -
    ---------------------- -------- ---- -------- ---
  - ---- -- ---- ---------- -------------- -
    ---------------------- -------- ---- ------ ---
  - ---- -
    ---------------------- -------- --------- ------ ------ ---
  -
-

------------------------
----------------------------------

-- -------------
------------------- -------- ----- ---- ----- -
  --- -
    -- ----------------- -
      ----- --- --------------------- --------- -- ----------
    -
    ------ ---------------- -
      ---- --------
        ---------- -------- ------ ------- ---
        ------
      ---- ----------
        ---------- -------- -------- ------- ---
        ------
      --------
        ----- --- ------------------------ ---- ------------
    -
  - ----- ----- -
    ----------
  -
---

-- -----
---------------- -------- -- -
  -------------------- --- --------- -- ---- --------
---

在上述代码中,我们向 /message 路由发送 GET 请求,并且在路由中使用了 BadRequestError 类型的错误作为例子。

当请求的 type 参数缺失时,try...catch 中的抛错代码会将错误抛出,交由错误处理函数处理,处理函数会将其捕捉并返回状态码为 400 的错误信息。如果请求的 type 参数不正确,则错误处理函数同样会将其捕捉并返回状态码为 400 的错误信息。

如果请求成功,则会返回相应的消息。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600673e2fb81d47349e53d99

纠错
反馈