如何在Promise的then方法中抛出错误并触发catch捕获?
在Promise的then回调中触发catch捕获错误的简洁实现
你只需要在then的回调函数里直接抛出异常,或者返回一个rejected状态的Promise,就能让后续的catch捕获到错误,完全不需要额外封装自定义Promise。
方法一:直接抛出Error(最简洁)
同步抛出的异常会被Promise自动包装成rejected状态,进而触发后续的catch,这是最直接的实现方式:
myPromiseToFetchAColor().then((color) => { if (color == "red") { // 直接抛出错误,会被后续catch捕获 throw new Error("颜色为红色,触发错误处理"); } else { return aNewPromise(); } }).catch((error) => { console.log(error.message); // 输出:颜色为红色,触发错误处理 });
方法二:返回Promise.reject()
如果涉及异步验证场景,可以返回一个rejected状态的Promise,效果和抛出异常一致:
myPromiseToFetchAColor().then((color) => { if (color == "red") { // 返回rejected的Promise,同样会触发catch return Promise.reject(new Error("颜色为红色,触发错误处理")); } else { return aNewPromise(); } }).catch((error) => { console.log(error.message); // 输出:颜色为红色,触发错误处理 });
两种方式都能满足你的需求,其中直接抛出Error的写法更简洁,完全不需要冗余的自定义Promise封装,仅通过验证逻辑分支就能决定后续流程或触发错误捕获。
内容的提问来源于stack exchange,提问作者Nathan Leggatt
相关产品推荐
相关产品推荐

