panic
panic用于表示程序无法继续运行的严重错误
panic使用defer + recover()函数进行捕获, recover只能在defer调用的函数中生效
recover只能捕获同一个goroutinue的panic
1 | func main() { |
这里就捕获不到gouroutinue panic这个错误
原因就是recover在main, 而panic发生在别的goroutinue
这样就可以捕获
1 | func run() { |
能恢复, 处理的问题使用error, 程序状态出现了问题不能继续, 使用panic
-
用户输入非法参数
-
文件不存在
-
网络失败
这些都是常见的问题, 不代表程序不能使用, 应该用error -
程序启动时出现错误
-
初始化出现错误
-
返回了不可能发生的状态
panic
recover在panic发生后去捕获panic, 放在defer里面我觉得是保证一定能执行, 如果panic了, 不使用defer, 后面的recover就不能运行, 所以要用defer来保证,
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 EurekaYu!
评论

