真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

golang中recover的用法-創(chuàng)新互聯(lián)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)golang中recover的用法,以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

站在用戶的角度思考問題,與客戶深入溝通,找到烏海海南網(wǎng)站設(shè)計(jì)與烏海海南網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國(guó)際域名空間、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋烏海海南地區(qū)。

recover

雖然沒有try catch機(jī)制,Go其實(shí)有一種類似的recover機(jī)制,功能弱了點(diǎn),用法很簡(jiǎn)單:

package main
import "fmt"
func main() {
fmt.Printf("%d\n", cal(1, 2))
fmt.Printf("%d\n", cal(5, 2))
fmt.Printf("%d\n", cal(5, 0))
fmt.Printf("%d\n", cal(9, 2))
}
func cal(a, b int) int {
defer func() {
if err := recover(); err != nil {
fmt.Printf("%s\n", 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ì)檢查有沒有異常產(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)的值

關(guān)于golang中recover的用法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


當(dāng)前名稱:golang中recover的用法-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://weahome.cn/article/gphhs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部