This question already has answers here:
Is there a way to wrap an await/async try/catch block to every function?
(4个答案)
3年前关闭。
我正在使用Nodejs。
我有几秒钟后的要求。
但是我的中间件无法捕获错误,而uncaughtException可以。
这是问题所在:
假设我具有另一个库的登录功能,这给了我一个希望。
该函数失败了,我无法在我的错误中间件中捕获该错误,以使用户响应该请求失败。
我不想在每个中间件中添加try/catch。 (route ===中间件) 我要使用异步/等待 使用uncaughtException不能帮助我,因为我无法在路由中将响应返回给用户。
那我该怎么办?有任何想法吗?
(4个答案)
3年前关闭。
我正在使用Nodejs。
我有几秒钟后的要求。
但是我的中间件无法捕获错误,而uncaughtException可以。
router.all('/incaseoferror', async(req, res, next) => {
const promise = await new Promise(function (resolve, reject) {
setTimeout(function () {
reject(new Error('this is a test err, the error-middleware NOT catch and it NOT OKAY'));
}, 3000);
});
// throw new Error('test error - the error-middleware catch it and that okay');
});
function clientErrorHandler(err, req, res, next) {
console.log('in clientErrorHandler', err);
//but not catch the promise error!
});
process.on('uncaughtException', function (error) {
// the error is catch here..
});
这是问题所在:
假设我具有另一个库的登录功能,这给了我一个希望。
该函数失败了,我无法在我的错误中间件中捕获该错误,以使用户响应该请求失败。
那我该怎么办?有任何想法吗?
最佳答案
这应该对你有帮助
await new Promise(function (resolve, reject) {
setTimeout(function () {
reject(new Error('this is a test err, the error-middleware NOT catch and it NOT OKAY'));
}, 3000);
})
.catch((err) => {
clientErrorHandler(err);
});
关于javascript - 中间件不会捕获等待的 promise 拒绝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47486688/
10-16 14:33