第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

golang 延時(shí)函數(shù)defer 作final處理文件或異常

標(biāo)簽:
Java

golang 延时函数defer 作final处理文件或异常
defer 函数先进后出原则,在函数内部使用时,会在return之后执行,所以根据这一特性,可以处理因为异常导致文件流未关闭问题(内存泄漏)和异常捕捉使用,具体如下:

  1. 文件流关闭

func CopyFile(dstName, srcName string) (written int64, err error) {
src, err := os.Open(srcName)if err != nil {return}
defer src.Close()  // 此处就算后续因为异常return,也会执行此处的close()dst, err := os.Create(dstName)if err != nil {return}
defer dst.Close()return io.Copy(dst, src)
}
  1. 数据库查询关闭

    resultIterator, err := stub.GetStateByPartialCompositeKey(DT_AGENT_COMMISSION_DATA,[]string{params.Agent_code,params.Period})    
    if err != nil {        return ErrorPbResponse(RESP_CODE_SYSTEM_ERROR,err.Error())
    }
    defer resultIterator.Close() //此处就算return或异常都会执行
  1. 用作异常捕捉,结合recover()捕获异常函数使用,类似java的final

func test(){    var exception interface{}
    temp("hello", func(e interface{}) {        exception = e
    })    if exception != nil {
         fmt.Println(exception)
    }    return}

func temp(msg string, handler func(e interface{})){
    defer func() {        if err := recover(); err != nil {
            handler(err)
        }
    }()
    fmt.Println(msg[len(msg)+1])//异常

    return}
func main() {
    test()
}



作者:李孝伟
链接:https://www.jianshu.com/p/9d25cf8dd9f2


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消