我说得像一个简单的错误......
arr.forEach --> when arr is undefined
是否会关闭整个节点线程?意味着所有用户都将被断开连接?
如果是这样的话我感到很惊讶,因为这肯定是非常不方便的。特别是如果我有多个用户都在运行聊天应用程序。
如果是这种情况,我如何确保我的代码EVER中没有错误?
更新:
我真的没有看到自动重启作为解决此问题的功能......
答案 0 :(得分:1)
无论是在浏览器还是节点中,99%的JS执行都在运行侦听器或处理程序或回调或调度例程。如果监听器崩溃,那么肯定会崩溃并且可能发生坏事,但节点(或浏览器)当然会继续运行,监听和分派。
在像koa这样的现代框架中,99%的执行发生在大型try-catch构造的上下文中,这些构造只会失败,可能会触发承诺失败,然后被最近的处理程序捕获,生命就会发生上。
如果错误在执行的主线上,事情正在设置或启动或初始化,那么是的,你将失去运气,但你所要做的就是到达{{1没有崩溃。
所以你的问题的答案是:不,节点错误处理真的不是那么危险。
答案 1 :(得分:0)
您应该使用域名。域为我们提供了一种方法来处理绑定到特定域的所有事件发射器和回调的错误事件。
所有错误都传播到该域而不会丢失错误的上下文。您可以在域调用中包装函数,订阅错误事件并在一个地方处理所有错误。
域确保您的功能独立运行,并且它的错误不会冒泡到流程中。如果错误是应用程序应该能够从中恢复的,那么这是阻止节点进程退出的好方法。
http://www.howtojs.org/understanding-exceptions-domains-in-nodejs/
答案 2 :(得分:-1)
typeof arr === 'array'
。其他语言也会因此异常而崩溃。