我通常使用Promisecatch()
函数error
在失败时返回具有属性的对象。
例如,就您而言,我愿意:
const createdUser = await this.User.create(userInfo)
.catch(error => { error });
if (Object(createdUser).error) {
console.error(error)
}
如果您不想继续添加catch()
调用,则可以在该函数的原型中添加一个辅助函数:
Function.prototype.withCatcher = function withCatcher() {
const result = this.apply(this, arguments);
if (!Object(result).catch) {
throw `${this.name}() must return a Promise when using withCatcher()`;
}
return result.catch(error => ({ error }));
};
现在您可以执行以下操作:
const createdUser = await this.User.create.withCatcher(userInfo);
if (Object(createdUser).error) {
console.error(createdUser.error);
}
编辑03/2020
您还可以向对象添加默认的“捕获到错误对象”功能,Promise
如下所示:
Promise.prototype.catchToObj = function catchToObj() {
return this.catch(error => ({ error }));
};
然后按如下方式使用它:
const createdUser = await this.User.create(userInfo).catchToObj();
if (createdUser && createdUser.error) {
console.error(createdUser.error);
}
var
,知道该变量将被吊起。那是“错误”吗?