常见错误类型
- 路由错误:比如访问不存在的路由。例如用户在浏览器输入了应用中未定义的路径。
- 语法错误:在编写 Express 代码时,如 JavaScript 语法错误,像漏写了括号、分号等。
- 数据库错误:当 Express 应用与数据库交互时可能出现错误,比如数据库连接失败,SQL 查询语句错误(如果使用 SQL 数据库)。
- 中间件错误:中间件函数执行过程中出现异常,如自定义中间件中对请求处理逻辑有误。
捕获错误的方式
- 全局错误处理中间件:
在 Express 应用中,可以定义一个全局错误处理中间件。它需要四个参数:
err
、req
、res
和 next
。例如:
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Something went wrong!');
});
- try - catch 块:在异步函数(如路由处理函数)中,可以使用
try - catch
块来捕获错误。
app.get('/example', async (req, res, next) => {
try {
// 可能抛出错误的代码,比如数据库查询
const result = await someAsyncOperation();
res.send(result);
} catch (err) {
next(err);
}
});
- Promise.catch:如果使用 Promise,在 Promise 链的末尾可以使用
.catch
方法捕获错误。
app.get('/promise - example', (req, res, next) => {
somePromise()
.then(result => res.send(result))
.catch(err => next(err));
});