我正在尝试处理我的异步方法抛出的自定义错误,但是try catch
块不能正确工作。
我认为我这样做应该可以解决问题,但是错误未被捕获,程序终止并在终端中显示。
这是它抛出错误的地方:
async setupTap(tap) {
const model = this.connection.model('Tap', TapSchema);
await model.findOneAndUpdate({ id: tap.id }, tap, (err, result) => {
let error = null;
if (!result) {
throw new Error('Tap doesn\'t exists', 404);
}
return result;
});
}
然后,错误处理代码:
async setupTapHandler(request, h) {
const tapData = {
id: request.params.id,
clientId: request.payload.clientId,
beerId: request.payload.beerId,
kegId: request.payload.kegId,
};
try {
await this.kegeratorApi.setupTap(tapData);
} catch (e) {
if (e.code === 404) return h.response().code(404);
}
return h.response().code(204);
}
有人能帮助我吗?
我也看了其他的话题:
new Error("string", 404)
会导致e.code == 404
? - Jaromanda XfindOneAndUpdate
函数 - 所以,无论如何都不会按预期工作。 - Jaromanda X