使用net.createConnection保证Node.js错误处理

时间:2011-09-23 17:25:55

标签: node.js error-handling

我想知道Node.js是否提供任何保证,错误处理程序将捕获代码中的所有错误,如下所示:

var c = net.createConnection(port, host);
c.on('error', function (e) { ... });

我必须处理其他语句在调用createConnection和设置错误处理程序的语句之间进行干预的代码,这有时会导致createConnection内部的错误渗透到顶层级别(可能是因为这些错误有时在错误处理程序设置之前发生)。但除非我遗漏了某些内容,否则原则上可能会出现在上面的代码中 - 它不太可能发生。有没有办法真正保证createConnection内发生的所有错误都会传递给错误处理程序?

1 个答案:

答案 0 :(得分:1)

只有在节点中存在错误时才会发生。

JavaScript是单线程的,在附加事件处理程序和创建连接之间通常不会中断该过程。

该代码不会在javascript land中生成错误。

因此,如果节点中存在错误,则可能存在代码无法捕获的错误。如果您在后台运行了一些狡猾的低级代码导致混乱,则可能会发生一些代码无法捕获的错误。

但在正常使用情况下,您的代码是“线程安全的”。在发生任何错误之前绑定事件处理程序,因为您的代码是阻塞的,没有任何东西可以抛出错误。