You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 03:40:43