iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 19
1
自我挑戰組

Go從新學系列 第 19

[DAY 19]GO 的 Panic

  • panic 恐慌中斷

如果在函式中執行 panic,那麼函式的流程就會中斷,若 A 函式呼叫了 B 函式,而 B 函式中呼叫了 panic,那麼 B 函式會從呼叫了 panic 的地方中斷,而 A 函式也會從呼叫了 B 函式的地方中斷,若有更深層的呼叫鏈,panic 的效應也會一路往回傳播。

很明顯的,panic 就是為了設立檢查點而生

我們可以設定遇到錯誤就執行 panic 讓程式去做出該有的反應

也可以想像我們用了 panic 就是暫停了程式

這邊有個簡單的例子

package main

import (
	"fmt"
)

func main() {
	fmt.Println(123)
	panic("Panic!")
	fmt.Println(456)
}

執行結果

123
Panic!

由於我們在印完 "123" 過後就用了 panic , "456" 並不會被列印

不過這個函式會產生執行期(run-time)的錯誤,這時候就會讓 recover 派上用場

明天會談談 recover 這個常常和 panic 搭載一起用的函式

https://ithelp.ithome.com.tw/upload/images/20191005/20121032pcWC4dbqK8.png


上一篇
[DAY 18]GO 的 Defer
下一篇
[DAY 20]GO 的 Recover
系列文
Go從新學26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言