在我的一条 route ,我想使用sendFile
函数发送文件,但我想捕捉可能在send函数期间发生的错误。我写了这段代码,但是我抛出的错误没有被catch块和应用程序崩溃捕获:
try {
res.sendFile(Path.join(__dirname, '../../uploads', fileName), null, (err) => {
if (err) {
throw err
}
})
} catch(err) {
Logger.error(err);
next(error);
}
如何捕获此错误?
最佳答案
这里基本上有四个选择:
if (err) { ... }
块中处理回调内部的错误。 if (err) { ... }
块内部调用一个回调,该回调可以通知其他代码。 您可能已经发现,回调内的
throw err
对您没有任何好处。它只是引发异步调用的res.sendFile()
回调,您无法使用自己的代码捕获或监视该回调。这里的封闭函数已经返回,您显示的try/catch
将不会捕获throw err
,因为try/catch
范围已经完成。在您的特定情况下,似乎可以执行以下操作:
res.sendFile(Path.join(__dirname, '../../uploads', fileName), (err) => {
if (err) {
Logger.error(err);
next(err);
}
});
这是上面的选项1)。
关于node.js - 如何捕获sendFile函数中的错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57195961/