Pet*_*rns 11 error-handling tcp node.js
所以我正在尝试编写一个简单的TCP套接字服务器,向所有连接的客户端广播信息.因此,当用户连接时,它们会被添加到客户端列表中,当流发出关闭事件时,它们将从客户端列表中删除.
这很有效,除了有时我在用户断开连接时发送消息.
我已经试过包装stream.write()在一个try/catch块,但没有运气.似乎错误是无法捕获的.
Pet*_*rns 18
解决方案是为流的'error'事件添加一个监听器.这起初看起来似乎是违反直觉的,但是它的合理性是合理的.
stream.write()以异步方式发送数据.当节点意识到写入套接字时引发了代码已经移动的错误,通过对stream.write的调用,所以没有办法在那里引发错误.
相反,在这种情况下,哪个节点从流中发出"错误"事件,并且对EventEmitter进行编码,使得如果没有"错误"事件的侦听器,则会将错误引发为顶级异常,并且该过程结束.
dom*_*nic 15
彼得是对的,
还有另一种方法,你也可以用一个捕获所有错误处理程序
process.on('uncaughtException',function(error){
// process error
})
Run Code Online (Sandbox Code Playgroud)
这将抓住抛出的一切......
如果可能的话,通常更好地做这个peter的方式,但是如果你在编写测试框架的地方,那么使用它可能是一个好主意 process.on('uncaughtException',...
这里有一个要点,它涵盖了(我认为)nodejs处理错误的所有不同之处 http://gist.github.com/636290
| 归档时间: |
|
| 查看次数: |
4961 次 |
| 最近记录: |