我想知道Sails.js中的错误处理是如何工作的。不幸的是,文档中的代码示例并没有涵盖这个用例。
问题是我一直收到这个错误。
UsageError: `.intercept()` handler returned `undefined`, but this should never happen.
Regardless, here is a summary of the original underlying error:
现在我想做的就是调用一个辅助程序,如果失败了,我就想抓住这个错误(任何),记录下来并运行一些代码。如果我不使用Sails,而是使用普通的承诺,我会这样处理。
await helper().catch((err) => { // run some code }
在Sails中,我应该可以使用 .intercept() 而不是.catch()。
我的代码是这样的。
// ExportController.js
const csv = await sails.helpers.files.convertToCsv(data)
.intercept((err) => {
sails.log.error(err)
req.addFlash('error_messages', 'Error parsing data to csv!')
return res.redirect(`/`);
})
// convert-to-csv.js
if (!Array.isArray(inputs.data)) {
throw new Error('invalid inputs.data type: ' + typeof inputs.data)
};
现在我怎样才能避免出现这个错误?代码示例 只显示显式添加到exits对象的错误处理情况,而不是一般的错误处理。在文档中 它说,如果过滤器参数是
不提供,所有的错误都会被拦截。
还是说只有db查询才会这样?因为.intercept()文档部分就在那个子类中。
你可以用 "throw 'errorCode'; "来举例。
设置出口。
exits {
errorWithCsvFile: {
responseType: 'badRequest'
}
}
const csv = await sails.helpers.files.convertToCsv(data)
.intercept(‘somethingWrongCode’, ‘errorWithCsvFile’)
... // Other handles
.intercept(err => new Error(err))
另一种方法:
try {
...
const csv = await sails.helpers.files.convertToCsv(data)
.intercept((err) => {
sails.log.error(err)
req.addFlash('error_messages', 'Error parsing data to csv!')
throw 'badRequest';
})
...
} catch (err) {
sails.log.err(err);
return res.redirect(`/`);
}