📜  Express 中的错误处理(1)

📅  最后修改于: 2023-12-03 14:41:04.539000             🧑  作者: Mango

Express中的错误处理

在编写任何应用程序时,处理错误非常重要。这个概念同样适用于Express应用程序。当路由处理程序或中间件函数抛出错误时,Express会调用错误处理程序。本文将介绍在Express中处理错误的常见方法。

默认错误处理程序

首先,让我们了解默认错误处理程序。它是Express应用程序的默认错误处理程序,用于处理未捕获的错误。默认情况下,如果应用程序中没有定义自己的错误处理程序,那么默认错误处理程序就会被执行。它输出错误的状态码和错误消息。

app.use((err, req, res, next) => {
  res.status(500).send('Oops! Something went wrong...')
})
自定义错误处理程序

我们可以编写自己的错误处理程序,以更好地管理错误及其呈现方式。我们通常这样做是为了更好地把控应用程序的错误处理体验和更清晰地报告错误信息。为了自定义错误处理程序,需要为每个路由处理程序或中间件函数设置错误处理程序。

app.get('/my-route', (req, res, next) => {
  const error = new Error('Oops! Something went wrong...')
  error.code = 500
  next(error)
})

app.use((err, req, res, next) => {
  res.status(err.code).send(err.message)
})
错误处理中间件

除了使用自定义错误处理程序之外,我们还可以创建错误处理中间件来处理错误。错误处理中间件与常规中间件函数不同,它们将具有四个参数,用来处理错误操作,且顺序一定要保证是在路由后调用。

function customErrorHandler(err, req, res, next) {
  if (err) {
    res.status(err.code || 500).send(err.message || 'Oops! Something went wrong...')
  } else {
    next()
  }
}

app.use('/my-route', customErrorHandler, (req, res, next) => {
  const error = new Error('Oops! Something went wrong...')
  error.code = 500
  next(error)
})

总之,错误处理是任何应用程序开发的重要方面。Express提供了各种用于处理错误的方法。我们可以使用默认错误处理程序或自定义错误处理程序来处理错误。我们还可以使用错误处理中间件来处理错误。