go学习笔记(5) — panic,Recover

Don’t Panic !

并不,只是在玩梗。

Panic

panic 作为内置函数,可以中断原有控制流程。go没有和java一样的异常抛出机制,而是使用了panicrecover机制。需要注意的是,这应当作为最后手段来使用,代码中不应该有或者说极少需要panic的东西。

当程序调用了panic,程序的执行被中断,但是defer的调用会正常执行。

Recover

可以让panic了的goroutine恢复过来。recover仅在defer的过程中生效,正常情况调用recover会返回nil

1
2
3
4
5
6
7
8
9
func panicRecover(f func()) (b bool){
defer func(){
if x := recover();x!=nil{
b = true
}()
}
f() //if f() get panic , it will got to recover
return
}