在接受this question的答案中,该人建议不要使用域名来抛出异常,因为他说,这会导致memleaks和不稳定。但这是我使用域名的方式。现在我很困惑。他是对的吗?
答案 0 :(得分:3)
与that answer断言不同,不能保证 会导致内存泄漏和不稳定。但 hard 确保您可以处理异常而不会导致内存泄漏和不稳定。
我认为围绕异常处理的混淆的核心源于Node.js文档中的这一措辞:
由于throw在JavaScript中的工作原理,几乎从来没有任何方法可以安全地“拾取”中断的地方,而不会泄漏引用,或创建其他类型的未定义的脆弱状态。
响应抛出错误的最安全方法是关闭进程。
http://nodejs.org/api/domain.html
实际上,JavaScript没有什么特别之处,因为异常特别危险。事实是,在任何语言中,异常都有可能是危险的。关键是要仔细考虑你的应用程序造成的副作用,以及你是否正在做任何可能危险的事情,如果要停止一半(提示:你可能是)。
This design guide from Joyent区分"程序员错误"和"操作错误"。在回答您的问题时,本指南主张不处理程序员错误(包括读取未定义的属性),并声称由于域和process.on('uncaughtException')
主要面向这些类型的错误,因此应该避免使用它们。
答案 1 :(得分:0)
我认为使用域名的最佳方法是找出错误。另外,我建议每几个小时至少重启一次nodejs进程。并使用群集,因此我们在同一端口上共享和服务了许多nodejs项目。