推荐答案
Promise
的 catch
方法用于处理 Promise
被拒绝(rejected)的情况。它相当于 .then(null, rejectionHandler)
的语法糖,专门用于捕获 Promise
链中的错误。
somePromise .then(result => { // 处理成功的结果 }) .catch(error => { // 处理错误 });
本题详细解读
1. catch
方法的作用
catch
方法用于捕获 Promise
链中的错误。当 Promise
被拒绝时,catch
方法中的回调函数会被调用,并且可以处理错误。
2. catch
方法的语法
catch
方法接收一个回调函数作为参数,该回调函数会接收一个错误对象作为参数。
promise.catch(onRejected);
onRejected
:一个函数,当Promise
被拒绝时调用,接收一个错误对象作为参数。
3. catch
方法的链式调用
catch
方法可以链式调用,用于处理 Promise
链中任意位置的错误。
-- -------------------- ---- ------- ----------- ------------ -- - -- ------- ------ --------------- -- ------------ -- - -- ---------- -- ------------ -- - -- ----------- ---
4. catch
方法的返回值
catch
方法返回一个新的 Promise
,这意味着你可以在 catch
之后继续链式调用其他 Promise
方法。
-- -------------------- ---- ------- ----------- ------------ -- - -- ------- -- ------------ -- - -- ---- ------ -------------- -- ------------ -- - -- ------ ---
5. catch
方法的错误传播
如果在 catch
方法中没有处理错误,或者 catch
方法本身抛出错误,错误会继续向下传播,直到被下一个 catch
捕获。
-- -------------------- ---- ------- ----------- ------------ -- - -- ------- -- ------------ -- - -- ---- ----- --- ---------- -------- -- ------------ -- - -- ----- ----- ----- ---
6. catch
与 then
的对比
catch
方法是 then
方法的特例,专门用于处理错误。以下两种写法是等价的:
-- -------------------- ---- ------- -- -- ----- ----------- ------------ -- - -- ------- -- ------------ -- - -- ---- --- -- -- ---- ------ ----------- ------ ------ -- - -- ------- -- ----- -- - -- ---- - --
7. 使用场景
catch
方法通常用于以下场景:
- 捕获
Promise
链中的错误。 - 在错误发生时提供备用值或执行备用逻辑。
- 在错误发生时记录日志或上报错误信息。
-- -------------------- ---- ------- ----------- ---------- -- - -- ---- -- ------------ -- - -------------------- -------- ------- ------- ------ ------------------ -- ---------- -- - -- ------ ---