Promise
解决了优雅的解决了回调地域的问题,现在已经大范围的使用Promise
,但是在使用Promise
的过程中,最令人头疼的就是错误处理的方式。
Promise 的错误处理方式
据我对Promise
的了解,Promise
的错误处理分为下面的几种方式,如果有还有其他的处理方式,欢迎大家指出。
1. try catch
try catch
是最常见的错误处理方式:
try {await Promise.reject('error')
} catch (error) {console.log(error)
}
但是这种方式有一个致命的缺点,就是只能捕获同步的错误,对于异步的错误,是无法捕获的。
2. Promise.prototype.catch
Promise
提供了catch
方法,用于捕获Promise
的错误:
Promise.reject('error').catch((error) => {console.log(error)
})
这种方式是我比较常用的方式,因为它不仅可以捕获同步的错误,还可以捕获异步的错误:
async function test() {await Promise.reject('error')
}
test().catch((error) => {console.log(error)
})
3. Promise.prototype.then
Promise
提供了then
方法,用于捕获Promise
的成功和失败:
Promise.reject('error').then((value) => {console.log(value)},(error) => {console.log(error)}
)
这种方式我放在catch