功能介绍
捕获代码错误,不论是同步的还是异步的。
详细说明
下面的函数有一半的概率抛出一个同步错误,一半的概率返回一个异步数据。
function fetchData() { if(Math.random() < 0.5) throw Error('同步错误') return Promise.resolve('数据') }如果在函数执行后使用Promise的.catch()方法,只能捕获到异步的错误,同步报错不进入.catch()中。
fetchData() .then(data => { console.log('成功', data) }) .catch(err => { console.log('失败', err) })如果不使用Promise.try()方法,需要写成
try { fetchData() .then(data => { console.log('成功', data) }) .catch(err => { console.log('失败', err) }) } catch(error) { console.log('失败', err) }才能捕获到同步错误。
使用Promise.try()后,则可以简化为
Promise.try( fetchData() .then(data => { console.log('成功', data) }) .catch(err => { console.log('失败', err) }) )可以统一对不同的两种报错进行处理。