Express.js 中处理错误的最佳实践

在开发 Web 应用程序时,错误处理非常重要,特别是在 Express.js 等 Node.js Web 框架中。本文将介绍在 Express.js 中处理错误的最佳实践,并为您提供示例代码。

1. 错误处理中间件

Express.js 提供了一个方便的中间件来处理错误 - error handling middleware。 错误处理中间件是在路由中间件之后定义的,其签名如下:

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

错误处理中间件通常用于捕获在应用程序中发生的错误并向用户发送有关错误的详细信息。在错误处理中间件中,您可以拿到 error 对象、request 对象和 response 对象,以及 next 函数。在错误处理中间件中通过调用 next() 函数来将错误消息传递到下一个错误处理中间件或者将错误消息发送给客户端。

以下是一个简单的错误处理中间件实现,该实现将错误消息呈现为 HTML 页面:

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

2. 使用内置错误对象

在 Express.js 中,有许多内置的错误对象可供使用。你可以选择捕获与内置错误对象相关的异常,以便在添加自定义消息时进行更好的处理。

使用内置错误对象时,将 error 参数赋值给内置错误对象的实例,并且可以在自定义消息和堆栈跟踪中使用此实例。 此外,可以在中间件中使用这些内置对象进行错误处理。

以下是一些常见的 Express.js 内置错误对象:

  • Error - 最常见的内置错误对象,表示未知错误。
  • TypeError - 当某些类型检查失败时抛出。
  • SyntaxError - 当 JavaScript 代码有语法错误时抛出。
  • ReferenceError - 当尝试使用未声明的变量时抛出。
  • RangeError - 当尝试使用超出范围的数字时抛出。
  • ValidationError - 当请求体参数验证失败时抛出。

以下是一个简单的例子,该例子使用 TypeError 内置对象来处理错误:

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

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

3. 使用 HTTP 错误

在 Express.js 中,也可以使用 http-errors 模块来生成 HTTP 错误。这个模块提供了非常方便的方式来声明 HTTP 错误。

以下是一个将 HTTP 错误与错误处理中间件结合使用的示例:

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

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

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

4. 日志记录错误

在处理错误时,日志记录是很有用的。通过记录错误,您可以更轻松地跟踪错误并排查错误。

下面是一个使用 winston 日志库记录错误的示例:

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

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

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

5. 结论

在本文中,我们讨论了在 Express.js 中处理错误的最佳实践,并提供了示例代码。要处理错误,您可以使用错误处理中间件、内置错误对象、HTTP 错误或记录错误以及日志系统。

通过了解这些最佳实践并学习如何在 Express.js 中处理错误,您可以提高您的 Web 应用程序的稳定性,并轻松地排除 Web 应用程序的错误。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/670e029e5f551281025f5c51