我们的项目用的iris框架, 在接口里面开启go程后如果go程 panic 了, 则整个服务都会挂掉, 能不能写一个全局的 recover来监听go程的 panic
panic还赖测试?
你测试能测试出数据库/redis 连接中断?能测试出调用第三方接口失败?
recover什么时候是用来恢复panic了?
recover的返回值是什么?recover是用在defer里的知道不?还recover让程序带病跑下去?
和软件质量有什么关系?
来,官方的说明
https://blog.golang.org/defer-panic-and-recover
来,spec里是怎么说的
https://golang.org/ref/spec#Handling_panics
Two built-in functions, panic and recover, assist in reporting and handling run-time panics and program-defined error conditions.
“program-defined error”看得到么?
来,让我们看看官方的html/template包的Must函数
func Must(t *Template, err error) *Template {
if err != nil {
panic(err)
}
return t
}
谁给你的自信说panic就是"不能自行恢复的错误,不是临时性的错误。 如果出现了panic的情况那就是必须要退出程序紧急处理了"
梁静茹么?
#24
更多评论
<a href="/user/polaris" title="@polaris">@polaris</a> 如果不考虑go程的话可以监听, 但是go程里面不知道咋监听...
#2