nodejs是单线程,当代码中出现错误的时候,服务就挂了。
当然相应的,有守护进程这种东西,在他挂了的时候能自动重启。
但是,如果node服务上的报错触发方式被别人知道了。
然后在执行业务逻辑的时候故意触发这个报错,可能会导致业务错乱,虽然有数据库事务,但是终究问题还是存在。
应该如何避免代码的错误导致node服务频繁重启?
nodejs是单线程,当代码中出现错误的时候,服务就挂了。
当然相应的,有守护进程这种东西,在他挂了的时候能自动重启。
但是,如果node服务上的报错触发方式被别人知道了。
然后在执行业务逻辑的时候故意触发这个报错,可能会导致业务错乱,虽然有数据库事务,但是终究问题还是存在。
应该如何避免代码的错误导致node服务频繁重启?
3 回答2.6k 阅读✓ 已解决
1 回答919 阅读✓ 已解决
2 回答1.2k 阅读
1 回答879 阅读✓ 已解决
2 回答1.6k 阅读
2 回答604 阅读✓ 已解决
2 回答1k 阅读
https://nodejs.org/api/process.html#process_event_uncaughtexception
但也请留意下方的 Warning: Using
'uncaughtException'
correctly,滥用这个机制会导致你的程序积累起越来越多的预期外错误,从而使得整个应用处于一个完全不可预测,难以复现的状态。无论是从业务安全还是维护排错来说,都不是一个良好实践。事实上任何试图“捕捉所有异常”的行为都是不可取的,所有的
try catch
都是给你用来处理 预期内 的异常情况,一旦出现预期之外的错误,die early ,然后尽快修复才是正确的做法。