有人能给我解释一下下面代码Express JS中两种异常错误处理方式的区别吗:
const express = require('express');
const app = express();
app.get('/test', (req, res, next) => {
// the first way:
throw new Error('my error message');
// the second way:
next(new Error('my error message'));
});
app.use((err, req, res, next) => {
res.status(err.status || 500).send(err.message || 'Internal Server Error');
});
app.listen(3000, () => console.log('Welcome to ExpressJS'));
它返回错误中间件处理的相同结果,但这里有什么区别?
2条答案
按热度按时间h5qlskok1#
根据源代码,什么都没有。
inn6fuwd2#
我偶然发现了一个场景,下一个函数对我有意义。我创建了一个中间件来检查express路由中的必需参数,当我遇到两个或更多必需参数不满足的情况时,抛出Error将在第一个错误时停止请求。使用下一个函数,它不会在第一个错误时停止,实际上我得到了关于我需要满足的所有参数的消息,这就是我想要做的。代码片段: