node经常会遇到程序异常,整个进程就会崩掉,有没有很好的捕获异常的package
发布于 9 年前 作者 weierbufan 6028 次浏览 最后一次编辑是 8 年前 来自 问答

话说使用try catch在同步的时候会影响性能,在异步的时候不可用。大神们有没有好的package,能很好的解决这个问题的。

12 回复

我觉得吧,谨慎引入第三方模块,保持一致性,守护进程大法好。。。

没什么特别好的办法

  • 流程上promise/a+处理异常就好了
  • pm2起多个实例,一个挂掉,不影响其他的
  • 1个服务器里最好只起1个pm2 app实例,不然如果一个挂了,会产生雪崩效应(docker是个好东西)

@reverland 怎么做才能更好的不让异常崩了整个进程,或者说怎么守护好进程呢???求解

@i5ting 太感谢了。看看docker这个东西。

这个不是说有没有包就可以解决的,关键写代码的时候要处理好异常情况,还有就是i5ting提到的,起多个实例,pm2兼具守护进程的作用

@weierbufan 我没啥好办法。。。服务跪了就重启。。。

@ncuzp 其实我就是想找有没有什么package能够很好的处理异常。。。。

@weierbufan 嗯 关于错误处理参考joyent的一篇文章可以参考下思路:Nodejs错误处理最佳实践(译文: http://code.oneapm.com/nodejs/2015/04/13/nodejs-errorhandling/)( 原文: https://www.joyent.com/developers/node/design/errors)

好好看看8楼那个链接

经验:

  1. code写好点,各种parse error好好自己捕捉
  2. 做好Error monitor, 如果进程倒了要能看到log和stack trace
  3. 应用ls “我没啥好办法。。。服务跪了就重启。。。”

其实有个包 我是在用的 不过不推荐 https://github.com/CrabDude/trycatch 可以做一个大的入口 然后放在那里卡一下,production可以用下,最终目的是好好填坑…

@weierbufan 最好的还是将项目的自动化测试补起来吧。既然异常退出了,肯定是代码出bug了。多进程保护只是亡羊补牢,只是给你尽快修bug缓冲一点点时间而已。生产环境出行worker进程异常退出重启,都是最严重的报警。 自豪地采用 CNodeJS ionic

@i5ting docker 已经批量部署了吗,没敢在正式环境用啊~

@fengmk2 谢谢,我们正在做测试这块,面对这种问题,还是把测试拿出来,尽可能避免在生产环境下出现exception吧。

回到顶部