gpt4 book ai didi

express - 使用Node.js/Express,是否可以从IIFE内部next()错误并前进至错误处理中间件?

转载 作者:行者123 更新时间:2023-12-03 08:20:09 24 4
gpt4 key购买 nike

问题:是否可以使用Express从IIFE内部返回错误并前进到我的错误处理中间件?
背景: IIFE用于创建async容器以包装await语句。我看不到这样的出路,我想知道我是否完全使用了错误的基本模式。

简化示例:

app.get('/', function(req, res, next) {

(async function() {

try {
let example = await someLogic(x);
} catch(err) {
return next(new Error('oops'));
}
})();

console.log('main endpoint');
});

app.use(function(err, req, res, next) {

console.log('my error', err.message);
});

最佳答案

Using Express is it possible to return an error from inside an IIFE and advance to my error handling middleware?



是的,那很好。它将调用 next(err)很好。但是,您的 return将仅从IIFE返回,并且在 try/catch仍将执行之后,其余的请求处理程序(不确定是否需要)。

仅供引用,将请求处理程序声明为 async可能更简单,然后不需要IIFE包装器:
app.get('/', async function(req, res, next) {

try {
let example = await someLogic(x);

console.log('main endpoint');
// send some response here

} catch(err) {
return next(new Error('oops'));
}
});

关于express - 使用Node.js/Express,是否可以从IIFE内部next()错误并前进至错误处理中间件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59700328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com