(基础)Promise中catch()方法使用,捕获错误(拒绝)

个人项目地址: SubTopH前端开发个人站

(自己开发的前端功能和UI组件,一些有趣的小功能,感兴趣的伙伴可以访问,欢迎提出更好的想法,私信沟通,网站属于静态页面)

SubTopH前端开发个人站icon-default.png?t=N7T8https://subtop.gitee.io/subtoph.github.io/#/home

以上 👆 是个人前端项目,欢迎提出您的建议😊

以下是正文内容...............

如果Promise抛出错误,then中没有处理就会报错

报错情况

// 这样会报错,因为没有处理promise的拒绝
const promise = new Promise((resolve, reject) => {
  reject("111111")
  // resolve()
})
promise.then(res => {        //这里没有处理promise错误reject("111111"),会报错
                    
})
promise.catch((err)=>{       //上面报错,不会执行
  console.log(err);
})

处理报错信息2种语法糖

// 错误必须处理,方式1
const promise = new Promise((resolve, reject) => {
  reject("111111")
  // resolve()
})
promise.then(res => {

}, err => {
  console.log(err);    //处理错误   reject("111111")
})

// 错误必须处理,方式2
const promise = new Promise((resolve, reject) => {
  reject("111111")
  // resolve()
})
promise.then(res => {

}).catch((err)=>{
  console.log(err);     //处理错误   reject("111111")
})

catch捕获错误顺序,首先捕获new Promise

const promise = new Promise((resolve, reject) => {
  reject("rejected status")
  // 或者
  // throw new Error("rejected status")
})
promise.then(res => {
}).then(res => {
  throw new Error("then error message")
}).catch(err => {
  console.log("err:", err)   //直接捕获 new Promise  reject("rejected status")
})

如果new Promise没有错误,会捕获then错误

const promise = new Promise((resolve, reject) => {
  resolve('22222')
})
promise.then(res => {
}).then(res => {
  throw new Error("then error message")
}).catch(err => {
  console.log("err:", err)   //直接捕获 then   throw new Error("then error message")
})

catch返回值和then返回值一样

普通值会包裹在promise  -- resolve('catch return value')中

返回promise或者thenable  和tnen返回值处理一样

// // 4.catch方法的返回值
const promise = new Promise((resolve, reject) => {
  reject("111111")
})
promise.then(res => {
  console.log("res:", res)
}).catch(err => {
  console.log("err:", err)           // new Promise   reject("111111")
  return "catch return value"        //catch返回值和then一样返回promise  -- resolve('catch return value')
}).then(res => {
  console.log("res result:", res)   //res result: catch return value  -- return "catch return value"
}).catch(err => {
  console.log("err result:", err)
})
const promise = new Promise((resolve, reject) => {
  reject("111111")
})
promise.then(res => {
  console.log("res:", res)
}).catch(err => {
  console.log("err:", err)             // new Promise   reject("111111")
  throw new Error("rejected status")
}).then(res => {
  console.log("res result:", res)   
}).catch(err => {
  console.log("err result:", err)     //err result: Error: rejected status
})

catch也可以和tnen一样多次调用(不是链式调用)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值