Go でパニックを見つけて対処するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-24 06:16:10
オリジナル
203 人が閲覧しました

How to Catch and Handle Panics in Go?

Go でのパニックの処理

Go では、予期しないエラーが発生したときにプログラムでパニックが発生することがあります。デフォルトでは、パニックが発生するとプログラムの実行が停止します。ただし、このようなパニックを「キャッチ」して適切に処理することは可能です。この記事では、Go でパニックを処理する方法の概要を説明します。

パニックのキャッチ

Go には、プログラムでパニックを管理できるようにする組み込みの reverse() 関数が用意されています。行動。 goroutine でパニックが発生した場合、recover() を使用してパニックをインターセプトし、その値を返すことができます。

例:

次のコードを考えてみましょう:

package main

import (
    "fmt"
    "os"
)

func main() {
    file, err := os.Open(os.Args[1])
    if err != nil {
        fmt.Println("Could not open file")
    }
    fmt.Printf("%s", file)
}
ログイン後にコピー

ファイル引数が指定されていない場合、このコードはインデックス範囲外エラーによりパニックになります。このパニックを処理するには、次のようにrecover()を使用できます:

package main

import (
    "fmt"
    "os"
)

func main() {
    // Wrap the main function in a deferred function that recovers from panics
    defer func() {
        if err := recover(); err != nil {
            fmt.Printf("Caught panic: %v\n", err)
        }
    }()

    file, err := os.Open(os.Args[1])
    if err != nil {
        fmt.Println("Could not open file")
    }
    fmt.Printf("%s", file)
}
ログイン後にコピー

プログラムがファイル引数なしで実行される場合、プログラムはパニックを捕捉し、終了する代わりにエラー メッセージを出力します。

パニックを使用する場合

パニックを捉えることは特定の状況では役立ちますが、次のことが重要です。慎重に使用してください。 Go のパラダイムは明示的なエラー チェックを重視しており、パニックは回復が不可能な例外的な状況にのみ使用されるべきです。

以上がGo でパニックを見つけて対処するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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