Go でパニックを防ぐにはどうすればよいでしょうか?

Barbara Streisand
リリース: 2024-11-12 17:47:02
オリジナル
675 人が閲覧しました

How Can You Catch Panics in Go?

Go でのパニックの検出

Go で予期しないイベントを処理する場合、パニックは重大なエラーを示す一般的なメカニズムです。ただし、場合によっては、これらのパニックを適切に処理して実行を続行することが望ましい場合があります。

提供されたコード内:

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() 関数を使用してパニックをキャッチして処理できます。

Recover() を使用してパニックを処理する

recover() 関数を使用すると、次のことが可能になります。パニック後に制御を取り戻すプログラム。これは、main 関数でパニックが発生した場合でも実行される遅延関数内で使用できます。

func main() {
    defer func() {
        if recovered := recover(); recovered != nil {
            // Handle the panic here
            fmt.Println("File not provided")
        }
    }()

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

この変更されたコードでは、recover() 関数が遅延関数内で使用されています。パニックが発生した場合、recover() はパニック呼び出しに渡された値を返します。この場合、パニック値を指定していないため、nil が返されます。

recover() の戻り値を確認することで、エラー メッセージを出力して実行を継続するなど、パニックを適切に処理できます。 .

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

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