我们的项目用的iris框架, 在接口里面开启go程后如果go程 panic 了, 则整个服务都会挂掉, 能不能写一个全局的 recover来监听go程的 panic
各位都淡定,讨论问题没必要生气,冷静,冷静 ^_^
panic并不代表是必须代码修复的严重bug,比如web服务,单个路由接口的处理函数中,某个 if 条件下的代码可能有一个nil指针导致的panic,但是这个 if 分支可能只是少量情况,大多数请求的调用,都不会触发这个panic
这时候recover+日志可以帮助排查bug,并且线上不至于宕机
如果收到panic就应该宕机等待人工修复,那才是线上服务长时间中断,而且panic如果必须宕机,那么 recover 存在的意义是什么?而且其他语言的try catch与recover是类似的
测试阶段应该尽量覆盖代码分支,线上服务可用也是需要保障的
#19
更多评论
<a href="/user/polaris" title="@polaris">@polaris</a> 如果不考虑go程的话可以监听, 但是go程里面不知道咋监听...
#2