介绍
express-err
是一个 Node.js Express 应用中全局异常处理的 npm 包。它可以方便地实现对 Express 应用程序中所有未捕获异常的集中处理并返回错误信息,同时可以自定义错误处理函数。
安装
在命令行中执行以下命令安装 express-err
:
npm install 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