Node.js:async/await异常捕获


Async/await 是 ES7 中的新特性,它可以让开发者编写异步代码像同步代码一样,的确它给我们带来了很多方便的地方,但是在 async/await 中如何来处理错误呢?在异步的调用中,会产生各种不同的错误,例如:HTTP 请求产生了错误、访问 DB 产生的异常、操作文件产生异常。在 Promise 的使用中,当遇到了错误,它会抛出一个异常,该异常将被捕获到一个方法回调中。在 async/await 中,我们又如何处理呢?

Node.js:await异常捕获方法

一、使用try/catch捕获异常

async function asyncFunc() {
    try {
        const token = await verifyToken(token);
        console.log(token)
    }
    catch(err) {
        console.log(err);
    }
}

回顾上面的代码,try/catch 的确可以来解决错误异常的处理,但是让代码非常的不干净,原本 async/await 的优势就是让代码更佳的简约,这样一来又违背了它的初衷,这让我们进入了新的思考。

二、使用to.js处理异常

1.CommonJS环境下安装await-to-js

$ npm i await-to-js --save
1.引入
const to = require('await-to-js').default;
2.使用
const[err,res]=await to(verifyToken(token))
if(err){
   console.log(err)
}else{
    console.log(res)
}

2.自己制作to.js

export default function to(promise) {
   return promise.then(data => {
      return [null, data];
   })
   .catch(err => [err]);
}
使用
import to from './to.js'
const[err,res]=await to(verifyToken(token))
if(err){
   console.log(err)
}else{
    console.log(res)
}

文章作者: Marshall
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Marshall !
评论
  目录