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

Go語言異常處理error、panic、recover的使用

 更新時間:2024年08月20日 11:34:49   作者:吃我一個平底鍋  
GO語言中引入的異常的處理方式為error、panic、recover ,本文主要介紹了Go語言異常處理error、panic、recover的使用,感興趣的可以了解一下

異常處理

Go 語言引入了一個關于錯誤處理的標準模式,即 error 接口,它是 Go 語言內建的接口類型,該接口的定義如下:

package errors

func New(text string) error {
	return &errorString{text}
}

// errorString is a trivial implementation of error.
type errorString struct {
	s string
}

func (e *errorString) Error() string {
	return e.s
}
  • 通過fmt包進行使用errorf接口
  • 通過自帶的errors包進行調用

在這里插入圖片描述

常用在我們對檢測程序是否正常

在這里插入圖片描述

panic

在通常情況下,向程序使用方報告錯誤狀態(tài)的方式可以是返回一個額外的 error 類型值。
但是,當遇到不可恢復的錯誤狀態(tài)的時候,如數組訪問越界、空指針引用等,這些運行時錯誤會引起 painc 異常。在一般情況下,我們不使用 panic 函數來報告普通的錯誤,而應該只把它作為報告致命錯誤的一種方式。當某些不應該發(fā)生的場景發(fā)生時,就調用panic。
一般而言,當 panic異常發(fā)生時,程序會中斷運行,并立即執(zhí)行在該 goroutine(可以先理解成線程,在中被延遲的函數(defer機制)。隨后,程序崩潰并輸出日志信息。日志信息包括 panic value 和函數調用的堆棧跟蹤信息。
不是所有的 panic 異常都來自運行時,直接調用內置的 panic 函數也會引發(fā) panic 異常: panic函數接受任何值作為參數。

func panic(v interface{})

直接調用panic函數

直接調用內置的 panic 函數也會引發(fā) panic 異常。

在這里插入圖片描述

數組越界導致panic

在這里插入圖片描述

recover

運行時 panc 異常一旦被引發(fā)就會導致程序崩潰。Go語言為我們提供了專用于“攔截”運行時 panic 的內建所數–recover。它可以是當前的程序從運行時 panic 的狀態(tài)中恢復并重新獲得流程控制權。

fune recover()interface{}

注意:recover只有在defer調用的所數中有效。

如果調用了內置函數recover,并且定義該 defer 語句的函數發(fā)生了 panic 異常,recover 會使程序從 panic 中恢復,并返回 panic value。導致panic 異常的函數不會繼續(xù)運行,但能正常返回。在未發(fā)生 panic 時調用recover,recover 會返回 nil。

在這里插入圖片描述

到此這篇關于Go語言異常處理error、panic、recover的使用的文章就介紹到這了,更多相關Go語言異常處理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • Go設計模式原型模式考查點及使用詳解

    Go設計模式原型模式考查點及使用詳解

    這篇文章主要為大家介紹了Go設計模式原型模式考查點及使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • go語言讀取csv文件并輸出的方法

    go語言讀取csv文件并輸出的方法

    這篇文章主要介紹了go語言讀取csv文件并輸出的方法,實例分析了go語言操作csv文件的技巧,需要的朋友可以參考下
    2015-03-03
  • Go語言中的自定義類型你了解嗎

    Go語言中的自定義類型你了解嗎

    自定義類型是 Go 語言中非常重要的概念之一,通過自定義類型,我們可以更好地封裝數據、組織代碼,提高程序的可讀性和可維護性。本文將從以下幾個方面介紹 Go 自定義類型的相關知識,感興趣的可以了解一下
    2023-04-04
  • Go語言中函數可變參數(Variadic Parameter)詳解

    Go語言中函數可變參數(Variadic Parameter)詳解

    在Python中,在函數參數不確定數量的情況下,可以動態(tài)在函數內獲取參數。在Go語言中,也有類似的實現方式,本文就來為大家詳細講解一下
    2022-07-07
  • Go語言通過Luhn算法驗證信用卡卡號是否有效的方法

    Go語言通過Luhn算法驗證信用卡卡號是否有效的方法

    這篇文章主要介紹了Go語言通過Luhn算法驗證信用卡卡號是否有效的方法,實例分析了Luhn算法的原理與驗證卡號的使用技巧,需要的朋友可以參考下
    2015-03-03
  • Go語言使用select{}阻塞main函數介紹

    Go語言使用select{}阻塞main函數介紹

    這篇文章主要介紹了Go語言使用select{}阻塞main函數介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Golang源碼分析之golang/sync之singleflight

    Golang源碼分析之golang/sync之singleflight

    golang/sync庫拓展了官方自帶的sync庫,提供了errgroup、semaphore、singleflight及syncmap四個包,本次先分析第一個包errgroup的源代碼,下面這篇文章主要給大家介紹了關于Golang源碼分析之golang/sync之singleflight的相關資料,需要的朋友可以參考下
    2022-11-11
  • 基于Go語言開發(fā)一個 IP 歸屬地查詢接口工具

    基于Go語言開發(fā)一個 IP 歸屬地查詢接口工具

    在日常開發(fā)中,IP 地址歸屬地查詢是一個常見需求,本文將帶大家使用 Go 語言快速開發(fā)一個 IP 歸屬地查詢接口服務,有需要的小伙伴可以了解下
    2025-09-09
  • Golang單元測試、go協(xié)程和管道示例詳解

    Golang單元測試、go協(xié)程和管道示例詳解

    在Go語言中并發(fā)編程是一種核心特性,這篇文章主要介紹了Golang單元測試、go協(xié)程和管道的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-11-11
  • golang API開發(fā)過程的中的自動重啟方式(基于gin框架)

    golang API開發(fā)過程的中的自動重啟方式(基于gin框架)

    這篇文章主要介紹了golang API開發(fā)過程的中的自動重啟方式(基于gin框架),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12

最新評論

临夏市| 朝阳市| 和顺县| 阆中市| 东阿县| 湘乡市| 金阳县| 定安县| 昭苏县| 鹤岗市| 钟祥市| 浦江县| 桐柏县| 上虞市| 平阴县| 廉江市| 曲阜市| 丹江口市| 驻马店市| 巴林左旗| 和静县| 化隆| 张掖市| 比如县| 耒阳市| 二手房| 枞阳县| 永寿县| 天等县| 集安市| 随州市| 两当县| 武邑县| 项城市| 民乐县| 高平市| 亳州市| 临清市| 盐源县| 丽江市| 长汀县|