欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go錯誤處理之panic函數(shù)和recover函數(shù)使用及捕獲異常方法

 更新時間:2023年03月24日 10:23:07   作者:雨雨不怕雨  
這篇文章主要介紹了Go錯誤處理之panic函數(shù)使用及捕獲,本篇探討了如何使用 panic 和 recover 來處理 Go 語言中的異常,需要的朋友可以參考下

前言

前面我們講過了error類型來處理一般的錯誤,本文會描述使用panic函數(shù)和recover函數(shù)來處理比較極端的錯誤。簡單來說,當程序運行時遇到無法處理的錯誤或異常情況時,會調用panic函數(shù)引發(fā)一個運行時錯誤,此時程序會終止執(zhí)行并拋出錯誤信息。為了避免程序崩潰,可以使用recover函數(shù)來捕獲錯誤,并進行處理或恢復程序的執(zhí)行,通常recover函數(shù)寫在defer語句中。

panic函數(shù)

panic函數(shù)是內置的一個函數(shù),他的結構如下:

func panic(v interface{})

此函數(shù)接受一個接口類型的值,這個值通常是錯誤的描述,調用次函數(shù)后,會引發(fā)異常,這將中止當前的程序流程,并在堆棧中記錄當前的異常信息。此函數(shù)可以被主動調用,也可以在發(fā)生數(shù)組越界、空指針引用等情況下被動調用。

我們將上篇文章的除法例子進行小小的修改,使用panic進行錯誤處理:

package main

import (
   "fmt"
)

func divide(a, b int) int{
   if b == 0 {
      panic("division by zero")
   }
   return a / b
}

func main() {
   result := divide(10, 0)
   fmt.Println("the result is ",result)
}

運行后,程序直接退出了,報division by zero錯誤。

recover函數(shù)

有些時候,我們不希望panic函數(shù)直接粗暴的退出,這時候我們可以使用recover函數(shù)對pannic進行捕獲,注意,recover函數(shù)只能寫在defer關鍵字之后哦!

recover也是內置函數(shù),他的結構如下:

func recover() interface{}

他能捕獲到的panic函數(shù)報出的錯誤,并使用接口類型進行返回。

我們使用recover對例子再次修改,讓程序可以繼續(xù)的運行,而不是粗暴的退出,代碼如下:

package main

import (
   "fmt"
)

func divide(a, b int) int{
   defer func() {
      if err:=recover();err!=nil {
         fmt.Printf("runtime panic : %v\n", err)
      }
   }()
   if b == 0 {
      panic("division by zero")
   }
   return a / b
}

func main() {
   result := divide(10, 0)
   fmt.Println("the result is ",result)
}

總結

本篇博客探討了如何使用 panic 和 recover 來處理 Go 語言中的異常。當程序遇到無法處理的錯誤時,它可以使用 panic 函數(shù)引發(fā)異常,并使用 recover 函數(shù)結合defer關鍵詞從異常中恢復。

到此這篇關于Go錯誤處理之panic函數(shù)和recover函數(shù)使用及捕獲異常方法的文章就介紹到這了,更多相關go異常捕獲panic 和 recover內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Golang協(xié)程池gopool設計與實現(xiàn)

    Golang協(xié)程池gopool設計與實現(xiàn)

    本文主要介紹了Golang協(xié)程池gopool設計與實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • Go語言Gin處理響應方式詳解

    Go語言Gin處理響應方式詳解

    gin框架封裝了常用的數(shù)據(jù)格式方法響應于客戶端,下面這篇文章主要給大家介紹了關于Go語言Gin處理響應方式的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • go-zero 應對海量定時/延遲任務的技巧

    go-zero 應對海量定時/延遲任務的技巧

    這篇文章主要介紹了go-zero 如何應對海量定時/延遲任務,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Go語言生成素數(shù)的方法

    Go語言生成素數(shù)的方法

    這篇文章主要介紹了Go語言生成素數(shù)的方法,實例分析了Go語言生成素數(shù)的技巧,需要的朋友可以參考下
    2015-03-03
  • 簡單聊聊Go?for?range中容易踩的坑

    簡單聊聊Go?for?range中容易踩的坑

    for循環(huán)問題,在面試中經(jīng)常都會被問到,并且在實際業(yè)務項目中也經(jīng)常用到for循環(huán),要是沒用好,一不下心就掉坑,本文就來講講Go?for?range中容易踩的坑吧
    2023-03-03
  • Go?連接?MySQL之?MySQL?預處理詳解

    Go?連接?MySQL之?MySQL?預處理詳解

    Go語言提供了豐富的庫和工具,可以方便地連接MySQL數(shù)據(jù)庫。MySQL預處理是一種提高數(shù)據(jù)庫操作效率和安全性的技術。Go語言中的第三方庫提供了MySQL預處理的支持,通過使用預處理語句,可以避免SQL注入攻擊,并且可以提高數(shù)據(jù)庫操作的效率。
    2023-06-06
  • golang使用信號量熱更新的實現(xiàn)示例

    golang使用信號量熱更新的實現(xiàn)示例

    這篇文章主要介紹了golang使用信號量熱更新的實現(xiàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • golang中的時間格式化

    golang中的時間格式化

    這篇文章主要介紹了golang中的時間格式化問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • golang 執(zhí)行命令行的實現(xiàn)

    golang 執(zhí)行命令行的實現(xiàn)

    本文主要介紹了golang 執(zhí)行命令行的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • golang多次讀取http request body的問題分析

    golang多次讀取http request body的問題分析

    這篇文章主要給大家分析了golang多次讀取http request body的問題,文中通過代碼示例和圖文介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01

最新評論