1. 程式人生 > >Go學習筆記:panic()和recover()

Go學習筆記:panic()和recover()

如何理解:

1、呼叫panic函式相當於throw一個異常,逐層啟動異常處理流程。在呼叫panic之前defer的操作會在呼叫panic後立即執行。

2、呼叫recover函式相當於catch了異常,會中止異常處理流程,並可以返回這個異常。

3、panic函式接受一個引數,任意型別,無返回值;

4、recover函式沒有引數,返回值就是異常本身;

5、一般,recover函式放在defer後面的一個匿名函式中執行。個人認為還應該放在函式的首部;

一個例子

package main


import (
"fmt"
)


func work() {
Log(10)
panic("ERROR!")
Log(100)
}


func Log(args ...interface{}) {
fmt.Println(args...)
}
func main() {
defer func() {
if r := recover(); r != nil {
Log(r)
}
}()
work()
}