异常处理
普通代码块异常处理
- 抛出异常
function openFile(fileName) { if (!exists(fileName)) { throw new Error('找不到文件 ' + fileName) } // ... }
- 捕获异常
try { openFile('../test.js') } catch(e) { // 优雅地处理抛出的期望 } finally { // 无论是否抛出异常,都要执行的语句(可选) }
实际项目中对 await 的异常
import to from 'await-to-js'; // 引入 await-to-js
const [err, response] = await to(request({ id: '1' }))
if(err){
console.log(err)
return
}
await-to-js 源码
export function to(
promise,
errorExt
){
return promise
.then((data) => [null, data])
.catch((err) => {
if (errorExt) {
const parsedError = Object.assign({}, err, errorExt);
return [parsedError, undefined];
}
return [err, undefined];
});
}
Promise异常处理
Promise.resolve('1')
.then(res => {
console.log(res) // 1
throw new Error('go wrong') // 抛出异常
})
.then(res => {
console.log(res) // 不会被执行
})
.catch(err => {
console.error(err) // 捕获并处理异常 ——> Error: go wrong
})