golangカスタム関数実装での例外処理

WBOY
リリース: 2024-04-28 08:21:01
オリジナル
1007 人が閲覧しました

Go でカスタム関数の例外を処理するには 3 つの方法があります。パニック組み込み関数を使用します (構文については記事を参照)。実用的なケース: 除数が 0 の場合の除算関数の定義、パニックの利点: 便利でカスタマイズ可能なエラー。さまざまな関数レベルでエラーを処理する場合の欠点: プログラム フローが中断され、デバッグが困難になる

golangカスタム関数実装での例外処理

Go のカスタム関数での例外処理

カスタムの処理Go の関数 例外には多くのメソッドがあります。 1 つの方法は、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 ステートメントの前に配置する必要があります。発生する が呼び出されるとき。

実践的なケース

2 つの数値を除算する

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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート