Express.js 是一个流行的 Node.js Web 框架,它可以帮助我们快速构建 Web 应用程序。在开发过程中,我们难免会遇到各种错误。为了更好地处理这些错误,我们可以创建自定义错误处理程序。
错误处理中间件
在 Express.js 中,错误处理程序是一个中间件函数,它接收四个参数:err、req、res 和 next。如果我们的应用程序中发生了错误,Express.js 将会调用这个函数。
app.use(function (err, req, res, next) { // 错误处理代码 });
创建自定义错误处理程序
我们可以通过继承内置的 Error 类来创建自定义错误类。以下是一个简单的例子:
class CustomError extends Error { constructor(message, status) { super(message); this.status = status; } }
这个自定义错误类有两个属性:message 和 status。message 表示错误消息,status 表示 HTTP 状态码。
接下来,我们可以创建一个中间件来处理这个自定义错误类:
-- -------------------- ---- ------- ---------------- ----- ---- ---- ----- - -- ---- ---------- ------------ - --------------------- -- ----- ---------- -------- ----------- --- - ---- - ---------- - ---
这个中间件首先检查错误是否是 CustomError 类的实例。如果是,它将设置正确的 HTTP 状态码并返回错误消息。否则,它将调用下一个中间件函数。
使用自定义错误处理程序
现在我们已经创建了自定义错误处理程序,我们可以在应用程序中使用它。例如,我们可以在路由处理程序中抛出一个 CustomError 错误:
app.get('/users/:id', function (req, res, next) { const id = req.params.id; if (!isValidId(id)) { return next(new CustomError('Invalid user ID', 400)); } // 处理请求 });
这个路由处理程序检查用户 ID 是否有效。如果无效,它将抛出一个 CustomError 错误,这将触发我们之前创建的自定义错误处理程序。
总结
在 Express.js 中创建自定义错误处理程序可以帮助我们更好地处理应用程序中的错误。我们可以通过继承内置的 Error 类来创建自定义错误类,并使用一个中间件来处理它们。在路由处理程序中抛出自定义错误,这将触发我们的自定义错误处理程序。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/657039ccd2f5e1655d8f16a1