关于panic、defer、recover的异常捕获

mikegit2014 · · 935 次点击
主协程里,是捕获不到其它协程的panic,如果不相信,你可以调试下。 一定是recover 只能获取同协程内的panic
#2
更多评论
我觉得楼主的这个话题比较伪命题, 因为不管是哪里用recover恢复现场, 只要处理过了就不会让程序挂掉. 你如果在协程里用了recover还不满意 需要继续向上panic的话, 你可以在defer的执行recover程序块里再一次panic看发生什么?
#1
这种应该是没啥关系吧, 只要作为一种编程规范在开启协程入口处加上defer recover不就可以了吗, 尤其是那种有依赖调用其他函数有可能挂掉的协程, 其他语言如果你没有捕获全局异常的话一样不友好直接整个程序挂掉退出了. go的很多框架都是这么做的.
#3