ホームページ > バックエンド開発 > Golang > Golang 例外処理におけるパニックとリカバリー

Golang 例外処理におけるパニックとリカバリー

WBOY
リリース: 2024-04-15 18:15:02
オリジナル
404 人が閲覧しました

Go では、例外処理に Panic と Recover が使用されます。 Panic は例外を報告するために使用され、Recover は例外から回復するために使用されます。パニックによりプログラムの実行が停止し、interface{} 型の例外値がスローされます。 Recover は遅延関数または goroutine から例外をキャッチし、それがスローするタイプのインターフェースの例外値を返すことができます。{}

Golang 例外処理におけるパニックとリカバリー

Go 言語の例外処理でのパニックとリカバリ

Go 言語の場合、パニック reverse キーワードは、例外処理の重要なメカニズムです。 panic は例外を報告するために使用され、recover は例外から回復するために使用されます。

Panic

panic キーワードは、例外条件を報告するために使用されます。これにより、プログラムの実行が直ちに停止され、スタック情報が出力されます。 panic を使用すると、プログラムは interface{} 型の例外値をスローします。例:

package main

func main() {
    panic("发生了异常")
}
ログイン後にコピー

Recover

recover キーワードは、panic から回復するために使用されます。現在のゴルーチンから interface{} 型の例外値を返すことができます。 Recovery は遅延関数またはゴルーチン内でのみ使用できます。例:

package main

import "fmt"

func main() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("捕获到异常:", r)
        }
    }()
    panic("发生了异常")
}
ログイン後にコピー

実用的なケース

2 つの数値の商を計算する関数 divide があるとします。

##divide

関数で発生する可能性のある例外を処理するには、recover キーワード: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:go;toolbar:false;'>func divide(a, b int) float64 { if b == 0 { panic(&quot;除数不能为零&quot;) } return float64(a) / float64(b) }</pre><div class="contentsignin">ログイン後にコピー</div></div>出力:

func main() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("捕获到异常:", r)
        }
    }()

    fmt.Println(divide(10, 2))
    fmt.Println(divide(10, 0))
}
ログイン後にコピー
を使用できます。

以上がGolang 例外処理におけるパニックとリカバリーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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