catch简介
catch方法的作用:
很多情况我们只需传promise的成功态(resolved)下调用的then方法的第一个处理函数,所以为了更好的语义化,我们使用then方法专门处理resolved态,使用catch方法专门处理rejected态。
catch方法的本质:
catch的本质是then方法的特例,即:then(null,err => {}); 不处理成功态,只处理失败态。
catch的基本用法
Promise的错误不会消失,直到被捕获为止:
new Promise((resolve,reject)=>{
reject('reason');
}).then(data => { // 处理成功态
console.log(data); // 未输出
}).catch(err => { // 捕获失败
console.log(err); // 输出'reason'
})
catch()可以捕获它前面为被处理或捕获的错误,一般总是建议,Promise对象后面要跟catch方法,这样可以处理Promise内部发生的错误。
catch方法跟then方法一样,会返回一个新的promise,默认情况也是resolved状态。如果是失败状态则需手动修改,或者直接将新的错误抛出。
new Promise((re