久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      golang recover后怎么返回

      golang recover后怎么返回

      recover

      雖然沒(méi)有try catch機(jī)制,Go其實(shí)有一種類似的recover機(jī)制,功能弱了點(diǎn),用法很簡(jiǎn)單: (推薦學(xué)習(xí):go)

      package main import "fmt" func main() { fmt.Printf("%dn", cal(1, 2)) fmt.Printf("%dn", cal(5, 2)) fmt.Printf("%dn", cal(5, 0)) fmt.Printf("%dn", cal(9, 2)) } func cal(a, b int) int { defer func() { if err := recover(); err != nil { fmt.Printf("%sn", err) } }() return a / b }

      首先,大家得理解defer的作用,簡(jiǎn)單說(shuō)defer就類似于面向?qū)ο罄锩娴奈鰳?gòu)函數(shù),在這個(gè)函數(shù)終止的時(shí)候會(huì)執(zhí)行,即使是panic導(dǎo)致的終止。

      所以,在cal函數(shù)里面每次終止的時(shí)候都會(huì)檢查有沒(méi)有異常產(chǎn)生,如果產(chǎn)生了我們可以處理,比如說(shuō)記錄日志,這樣程序還可以繼續(xù)執(zhí)行下去。

      package main  import (         "errors"         "fmt"         "math" )  func main() {         _, err := IntFromInt64(math.MaxInt32 + 1)         if err != nil {                 fmt.Println(err)         } }  func ConvertInt64ToInt(i64 int64) int {         if math.MinInt32 <= i64 && i64 <= math.MaxInt32 {                 return int(i64)         }         panic("can't convert int64 to int") }  func IntFromInt64(i64 int64) (i int, err error) {//這里         defer func() {                 if err2 := recover(); err2 != nil {                         i = 0//這里                         err = errors.New("ttt")//這里                 }         }()         i = ConvertInt64ToInt(i64)         return i, nil }

      主要思想:return之前利用defer修改返回變量(提前確定為i和err)的值

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)