promise是ES中一个异步操作对象,它把操作放到堆栈中按照先进先出的原则进行处理。这里我只说两种捕获错误的方法作记录。
1、最常用的,在then的末尾加上catch,跳过then,直接进入catch(返回错误)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
new Promise(resolve=>{ setTimeout(()=>{ throw new Error('错误') },1000) }) .then(value => { console.log('hello') }) .catch(e=>{ console.log('this is a '+e.message) }) //Uncaught Error: 错误 //at setTimeout (<anonymous>:3:15)` |
2、参数方法,同样跳过then(返回错误信息而已)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
new Promise((resolve,rejec)=>{ setTimeout(()=>{ //throw new Error('错误'); rejec('错误') },1000) }) .then(value => { console.logo('hello') }, error => { console.log('this is a '+error) }) //this is a 错误 |
3、错误后面跟then
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
new Promise((resolve,reject)=>{ setTimeout(()=>{ throw new Error('错误'); // hello2 不会被输出 //rejec('错误') // hello2 会被输出 },1000) }) .then(value => { console.logo('hello') }) .catch(e=>{ console.log('this is a '+e.message); throw new Error('错误'); }) .then(value => { console.log('hello2') }) |