Go语言精进之路读书笔记第39条——不要使用panic进行正常的错误处理
39.1 Go的panic不是Java的checked exception
1.checked exception实质是错误,而panic是异常
2.API调用者没有义务处理panic
3.未被捕获的panic意味着“游戏结束”
39.2 panic的典型应用
1.充当断言角色,提示潜在bug
// $GOROOT/src/encoding/decode.go
switch case语句中走到default的情况,触发panic
2.用于简化错误处理控制结构(不推荐)
3.使用recover捕获panic,防止goroutine意外退出
39.3 理解panic的输出信息
理解程序发生panic时输出的栈帧信息有助于快速定位bug,找出“元凶”