请问:koa中的错误捕获问题
发布于 4个月前 作者 645266232 263 次浏览 来自 问答

比如我有一段代码如下:

function * () {
   res = yield request "xxxxx"
   // do something
   yield mysql.query "xxxx"
   // do something
   yield request "xxxxx"
}

如果我要对这段代码做错误处理,使用try catch捕获错误,那么问题来了,如果我对单个yield做错误捕获显然太麻烦,如果我在函数外面包一层yield,记得V8 对try catch中的代码不会做任何优化,大量调用情况下是否影响性能?还有什么比较好的处理办法嘛?

5 回复

在调用的最外面加了一个try catch,

     app.use(function * (next) {
        try {
            yield next;
        } catch (e) {
            console.error('app.js error:--->', e);
        }
    });```
这样可否。?

安心用 try catch 吧 首先,这些都是异步调用,就算 v8 不优化,大量调用也不会对性能有什么影响 其次,v8 目前不仅不对 try catch 优化,它也不对 generator function 优化,所以不用纠结优化的问题了

参考:Optimization-killers

@gyson 哈哈哈,反正都不优化,就凑一起用吧

等你真碰到性能问题再说吧…

回到顶部