Golang が例外により終了しない

PHPz
リリース: 2023-05-10 11:14:36
オリジナル
779 人が閲覧しました

Golang の人気に伴い、アプリケーション開発に Golang を使用する開発者が増えています。 Golang は C 言語に似た簡潔で読みやすい構文を備えていますが、他の言語に比べて例外処理が厳しくなります。この記事ではGolangで例外非終了メソッドを実装する方法を紹介します。

Golang では、標準のパニックおよび回復メカニズムを使用して例外を処理すると、プログラムは直接終了します。以下に簡単な例を示します。

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

func main() {
    test()
    fmt.Println("End main")
}
ログイン後にコピー

上記のコードでは、テスト関数がパニック ステートメントを実行すると、プログラムは「End main」を出力せずに直接終了します。したがって、例外が発生したときにプログラムが終了しないように、他の例外処理メソッドを見つける必要があります。

簡単な方法は、defer ステートメントと Recovery 関数を使用して例外を処理することです。次のコード ブロックを使用して例外をキャッチできます。

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

func main() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered:", r)
        }
    }()
    test()
    fmt.Println("End main")
}
ログイン後にコピー

この場合、テスト関数がパニック ステートメントを実行すると、リカバリ関数がトリガーされ、プログラムは終了せずに実行を継続します。最後に、main 関数は「End main」を出力します。

例外を処理する別の方法は、Golang のエラー処理メカニズムを使用することです。 Golang のすべての関数はエラー オブジェクトを返すことができます。したがって、関数内で例外が発生した場合、panic ステートメントを使用してプログラムの実行を終了する代わりに、エラー オブジェクトを直接返すことができます。

次に、エラー処理メカニズムを使用して例外を処理する例を示します。

func test() error {
    fmt.Println("Start test")
    return errors.New("Something wrong")
}

func main() {
    if err := test(); err != nil {
        fmt.Println(err)
    }
    fmt.Println("End main")
}
ログイン後にコピー

この例では、テスト関数は、New 関数によって作成されたエラー オブジェクトを返します。 main関数では、test関数の戻り値がnilかどうかで例外が発生したかどうかを判定しています。例外が発生した場合、プログラムはエラー メッセージを出力し、実行を続行します。最後に、main 関数は「End main」を出力します。

要約すると、Golang の例外処理は、recover 関数とエラー処理メカニズムを通じて実装できます。特定のビジネス ニーズに基づいて、適切な例外処理方法を選択できます。

以上がGolang が例外により終了しないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!