首頁 > 後端開發 > Golang > golang自訂函數實作中的異常處理

golang自訂函數實作中的異常處理

WBOY
發布: 2024-04-28 08:21:01
原創
1027 人瀏覽過

在Go 中處理自訂函數異常有3 種方法:使用panic 內建函數(語法見文章)實戰案例:define divide 函數,當除數為0 時Panic優點:方便、可自訂錯誤訊息、可在不同函數層級處理錯誤缺點:破壞程式流程、偵錯困難

golang自訂函數實作中的異常處理

Go 中自訂函數中的例外處理

在Go 中處理自訂函數異常有多種方法。其中一種方法是使用 panic 內建函數。 panic 會將程式控制權傳遞給 recover 函數,從而允許您處理異常並安全地恢復程式執行。

語法

package main

import "fmt"

func main() {
    f := func() {
        panic("custom error")
    }

    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered from panic:", r)
        }
    }()

    f()
}
登入後複製

注意:defer 語句必須放置在panic 語句之前,以便在發生panic 時被呼叫。

實戰案例

我們定義了一個名為 divide 的自訂函數,它將兩個數字相除。如果除數為 0,函數會觸發例外:

package main

import "fmt"

func main() {
    divide := func(numerator, denominator int) float64 {
        if denominator == 0 {
            // 触发错误
            panic("不能除以 0")
        }

        return float64(numerator) / float64(denominator)
    }

    defer func() {
        if r := recover(); r != nil {
            fmt.Println("错误:", r)
        }
    }()

    result := divide(10, 2)
    fmt.Println(result) // 输出:5

    result = divide(10, 0) // 触发错误
}
登入後複製

輸出:

5
错误: 不能除以 0
登入後複製

優點

  • 方便且易於實現。
  • 允許您定義自訂錯誤訊息。
  • 可以在不同函數層級處理錯誤。

缺點

  • 可能會破壞程式流程。
  • 對於大型程式可能難以除錯。

以上是golang自訂函數實作中的異常處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板