我想知道Node.js是否提供任何保证,错误处理程序将捕获代码中的所有错误,如下所示:
var c = net.createConnection(port, host);
c.on('error', function (e) { ... });
我必须处理其他语句在调用createConnection
和设置错误处理程序的语句之间进行干预的代码,这有时会导致createConnection
内部的错误渗透到顶层级别(可能是因为这些错误有时在错误处理程序设置之前发生)。但除非我遗漏了某些内容,否则原则上可能会出现在上面的代码中 - 它不太可能发生。有没有办法真正保证createConnection
内发生的所有错误都会传递给错误处理程序?
答案 0 :(得分:1)
只有在节点中存在错误时才会发生。
JavaScript是单线程的,在附加事件处理程序和创建连接之间通常不会中断该过程。
该代码不会在javascript land中生成错误。
因此,如果节点中存在错误,则可能存在代码无法捕获的错误。如果您在后台运行了一些狡猾的低级代码导致混乱,则可能会发生一些代码无法捕获的错误。
但在正常使用情况下,您的代码是“线程安全的”。在发生任何错误之前绑定事件处理程序,因为您的代码是阻塞的,没有任何东西可以抛出错误。