最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

GO語言異常處理機(jī)制panic和recover分析

 更新時(shí)間:2014年12月03日 15:15:09   投稿:shichen2014  
這篇文章主要介紹了GO語言異常處理機(jī)制panic和recover,分析了捕獲運(yùn)行時(shí)發(fā)生錯(cuò)誤的方法,是非常實(shí)用的技巧,需要的朋友可以參考下

本文實(shí)例分析了GO語言異常處理機(jī)制panic和recover。分享給大家供大家參考。具體如下:

Golang 有2個(gè)內(nèi)置的函數(shù) panic() 和 recover(),用以報(bào)告和捕獲運(yùn)行時(shí)發(fā)生的程序錯(cuò)誤,與 error 不同,panic-recover 一般用在函數(shù)內(nèi)部。一定要注意不要濫用 panic-recover,可能會(huì)導(dǎo)致性能問題,我一般只在未知輸入和不可靠請(qǐng)求時(shí)使用。

golang 的錯(cuò)誤處理流程:當(dāng)一個(gè)函數(shù)在執(zhí)行過程中出現(xiàn)了異?;蛴龅?panic(),正常語句就會(huì)立即終止,然后執(zhí)行 defer 語句,再報(bào)告異常信息,最后退出 goroutine。如果在 defer 中使用了 recover() 函數(shù),則會(huì)捕獲錯(cuò)誤信息,使該錯(cuò)誤信息終止報(bào)告。

示例:

復(fù)制代碼 代碼如下:
package main

import (
 "log"
 "strconv"
)

//捕獲因未知輸入導(dǎo)致的程序異常
func catch(nums ...int) int {
 defer func() {
  if r := recover(); r != nil {
   log.Println("[E]", r)
  }
 }()

 return nums[1] * nums[2] * nums[3] //index out of range
}

//主動(dòng)拋出 panic,不推薦使用,可能會(huì)導(dǎo)致性能問題
func toFloat64(num string) (float64, error) {
 defer func() {
  if r := recover(); r != nil {
   log.Println("[W]", r)
  }
 }()

 if num == "" {
  panic("param is null") //主動(dòng)拋出 panic
 }

 return strconv.ParseFloat(num, 10)
}

func main() {
 catch(2, 8)
 toFloat64("")
}


輸出如下:

2014/11/01 22:54:23 [E] runtime error: index out of range
2014/11/01 22:54:23 [W] param is null

希望本文所述對(duì)大家的GO語言程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 詳解如何熱重啟golang服務(wù)器

    詳解如何熱重啟golang服務(wù)器

    這篇文章主要介紹了詳解如何熱重啟golang服務(wù)器,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • Golang將Map的鍵值對(duì)調(diào)的實(shí)現(xiàn)示例

    Golang將Map的鍵值對(duì)調(diào)的實(shí)現(xiàn)示例

    本文主要介紹了Golang將Map的鍵值對(duì)調(diào)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Go語言Echo服務(wù)器的方法

    Go語言Echo服務(wù)器的方法

    這篇文章主要介紹了Go語言Echo服務(wù)器的方法,實(shí)例分析了Echo服務(wù)器的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • 詳解Go語言如何實(shí)現(xiàn)并發(fā)安全的map

    詳解Go語言如何實(shí)現(xiàn)并發(fā)安全的map

    go語言提供的數(shù)據(jù)類型中,只有channel是并發(fā)安全的,基礎(chǔ)map并不是并發(fā)安全的,本文為大家整理了三種實(shí)現(xiàn)了并發(fā)安全的map的方案,有需要的可以參考下
    2023-12-12
  • Go日志框架zap增強(qiáng)及源碼解讀

    Go日志框架zap增強(qiáng)及源碼解讀

    這篇文章主要為大家介紹了Go日志框架zap增強(qiáng)及源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Go語言基礎(chǔ)語法之結(jié)構(gòu)體及方法詳解

    Go語言基礎(chǔ)語法之結(jié)構(gòu)體及方法詳解

    結(jié)構(gòu)體類型可以用來保存不同類型的數(shù)據(jù),也可以通過方法的形式來聲明它的行為。本文將介紹go語言中的結(jié)構(gòu)體和方法,以及“繼承”的實(shí)現(xiàn)方法
    2021-09-09
  • Go語言Cookie用法分析

    Go語言Cookie用法分析

    這篇文章主要介紹了Go語言Cookie用法,結(jié)合實(shí)例形式分析了Go語言Cookie的設(shè)置、讀取等相關(guān)操作技巧,需要的朋友可以參考下
    2017-02-02
  • Golang中的http.Server源碼深入分析

    Golang中的http.Server源碼深入分析

    這篇文章主要介紹了Golang中的http.Server源碼,實(shí)現(xiàn)一個(gè)http.Server非常容易,只需要短短幾行代碼,同時(shí)有了協(xié)程的加持,Go實(shí)現(xiàn)的http.Server能夠取得非常優(yōu)秀的性能,下面我們來分析看看http.Server的源碼
    2023-05-05
  • Go語言正則表達(dá)式示例

    Go語言正則表達(dá)式示例

    這篇文章主要介紹了Go語言正則表達(dá)式,結(jié)合實(shí)例形式分析了Go語言正則表達(dá)式實(shí)現(xiàn)字符串的匹配、查找等相關(guān)操作技巧,需要的朋友可以參考下
    2017-01-01
  • Golang實(shí)現(xiàn)定時(shí)任務(wù)的幾種方法小結(jié)

    Golang實(shí)現(xiàn)定時(shí)任務(wù)的幾種方法小結(jié)

    在 Golang 開發(fā)中,定時(shí)任務(wù)是常見的需求,本文將介紹幾種在 Golang 中實(shí)現(xiàn)定時(shí)任務(wù)的方法,包括 time 包的定時(shí)器、ticker,以及第三方庫 cron,并通過示例代碼展示它們的使用方式,需要的朋友可以參考下
    2024-01-01

最新評(píng)論

华池县| 临颍县| 张家川| 玉树县| 陈巴尔虎旗| 开封市| 尖扎县| 忻城县| 金秀| 阳城县| 克东县| 西乌珠穆沁旗| 和平区| 镇平县| 麦盖提县| 广汉市| 大连市| 常山县| 江达县| 抚松县| 龙游县| 百色市| 九台市| 凉城县| 安仁县| 松桃| 湘阴县| 繁昌县| 兴义市| 虎林市| 西乌珠穆沁旗| 九寨沟县| 宁阳县| 平邑县| 清镇市| 越西县| 兴宁市| 扎鲁特旗| 阜新市| 衡山县| 高碑店市|