科阿安全地处理错误?

Nodejs API指出…

由于JavaScript在JavaScript中的工作原理,几乎没有任何方法可以安全地“捡起你离开的地方”,而不会泄漏引用或创build其他某种不明确的状态。

然而,Koa捕获错误并避免退出nodejs进程。 什么使Koa安全地藐视这个build议?

主要有两种情况,koa不能安全地处理错误。

抛出错误在不同的滴答声:

app.use(function* () { setImmediate(function () { throw new Error('boom') }) }) 

未设置为response.body=发射器错误:

 app.use(function* () { this.response.body = stream.pipe(zlib.createGzip()) }) 

执行第一种情况的任何函数或库都是格式错误的,不应使用。 如果函数/库正确地使用承诺和/或callback,它将永远不会发生。

对于发射器,总是将每个stream设置为主体(或使用中间件):

  app.use(function* () { this.response.body = stream this.response.body = this.response.body.pipe(zlib.createGzip()) }) 

Koa通过允许你对“asynchronous”东西使用try / catch,特别是callback和承诺来做到这一点。 但是,您不能尝试/捕获抛出在不同的滴答或发射器上的错误。