Skip to content

异常抛出处理

用 try/catch 包裹 executor 的执行,同步异常会被捕获并自动调用 reject。

本节要点

在 constructor 中,用 try { executor(resolve, reject) } catch(err) { reject(err) } 包裹 executor 调用。当 executor 内部抛出同步错误时,自动转为 reject 状态。

完整代码

my-promise.js
Loading code...

注意

异步错误(如 setTimeout 中的 throw)无法被捕获,属于正常行为。

运行示例

示例一:同步异常被捕获并自动 reject
示例代码
Loading...
示例二:正常 resolve 不受影响
示例代码
Loading...
示例三:异步异常无法被捕获
示例代码
Loading...

循序渐进实现 Promise