实际上,我不完全明白为什么我的代码不在堆栈跟踪中,如果节点是单线程的.也许我从根本上误解了一些事情,但为什么我的应用程序有时会因为我没有写过任何内容的堆栈跟踪而死亡?
我正在使用node / express编写一个非常简单的代理服务器.作为一个例子,我定期得到这个“套接字挂断错误”:
Error: socket hang up at createHangUpError (_http_client.js:250:15) at Socket.socketonEnd (_http_client.js:342:23) at emitNone (events.js:91:20) at Socket.emit (events.js:185:7) at endReadableNT (_stream_readable.js:926:12) at _combinedTickCallback (internal/process/next_tick.js:74:11) at process._tickCallback (internal/process/next_tick.js:98:9) code: 'ECONNRESET' }
由于堆栈跟踪中的JavaScript文件都不是我的,我不知道这是从哪里来的.它基本上是试错,试图捕捉错误,并添加.on风格的错误处理程序,直到找到正确的地方.
我觉得我从根本上缺少一些东西 – 为了调试这样的错误,我应该做的不同?如果我看不到(在我的代码中)导致什么,我该如何知道在哪里处理?我如何知道我应该使用try / catch块,还是像request.on(‘error’){…}?