node运行过程中,如遇到没有捕获异常,则自行中断退出。
像缺少依赖等常见问题,还好办;但像AEDDRINUSE这种错误就很难判断,可能会摸不到头脑,会导致mac客户端不能重启成功,因为你要开启两个相同的服务(windows还是能够开的,但也会报错提示)。不是代码的问题,有时候会相当不好办。要想快速锁定问题,最好在node中加入异常事件的捕获解决方案:
process.on('uncaughtException', function(err) {
console.log( ('出错了 :' + err).red );
});
PS:.red 是利用colors模块提供的方法,提示作用。
我们也可以使用domain进行异常事件处理,但个人感觉不是很理想,因为domain需要引用单独模块,另外通过uncaughtException能够提供很多有用的信息了,感觉domain其他信息有些多余,个人认为快速的定位问题才是最主要的,同时要简单。
网友评论