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

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

12 回复
reverland

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

i5ting

没什么特别好的办法

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

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

weierbufan

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

ncuzp

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

reverland

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

weierbufan

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

ncuzp

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

HarryHong

好好看看8楼那个链接

经验:

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

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

fengmk2

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

plusmancn

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

weierbufan

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