ホームページ >バックエンド開発 >Golang >golang パニックの標準エラー

golang パニックの標準エラー

WBOY
WBOYオリジナル
2023-05-10 10:30:07572ブラウズ

パニックは、golang プログラミング言語の例外処理メカニズムです。プログラムで致命的なエラーが発生すると、パニック関数を使用してパニックを引き起こし、プログラムの実行を直ちに停止します。この記事ではパニックの概念とパニックへの対処法を紹介します。

  1. パニックの概念
    golang では、パニック関数によって引き起こされるパニックは、プログラムの実行を停止してエラーを報告する非常に強力なメカニズムです。パニックが発生すると、golang は割り当てられたすべてのリソース (メモリ、ファイル ハンドルなど) を解放し、プログラムが終了するかリカバリ関数によってインターセプトされるまでスタックがトレースバックされ、パニック情報が表示されます。

以下は簡単なサンプル プログラムです。パニック関数の効果を自分で試すことができます:

package main

func main() {
    panic("出错了")
}

ここでは、明示的にパニック関数を呼び出し、文字列「Error 」を変更します。パラメータとして渡されます。プログラムはここですぐに実行を停止し、出力は次のようになります:

panic: 出错了

goroutine 1 [running]:
main.main()
        /tmp/sandbox657484611/main.go:4 +0x2a
  1. panic のエラー メッセージ
    通常、panic 関数を使用するときは、わかりやすいメッセージを提供するよう努めます。エラー メッセージを表示することで、問題が発生したときにより迅速に発見して解決できるようになります。パニック関数では、スタック トレースに表示できる文字列またはエラーを渡すことができます。

次はサンプル プログラムです。エラーを使用します:

package main

import (
    "errors"
)

func main() {
    err := errors.New("这里出错了")
    panic(err)
}

実行後、ターミナル ウィンドウに次の出力が表示されます:

panic: 这里出错了

goroutine 1 [running]:
main.main()
        /tmp/sandbox633080144/main.go:7 +0x2f

As you上記の出力からわかるように、カスタマイズされたエラー メッセージがパニック状態で正常に表示されました。

  1. パニックの処理
    プログラムでは通常、try-catch や try-finally などの構造を使用して例外を処理します。 golang では、パニックとリカバリを併用して例外を処理できます。

recover 関数は、defer 関数で使用できる組み込み関数です。パニックが発生したときにプログラムの実行を再開できるため、プログラム全体がクラッシュせず、パニック エラー メッセージが表示されます。

次は、パニックとリカバリを一緒に使用する例です:

package main

import "fmt"

func main() {
    defer func() {
        r := recover()
        if r != nil {
            fmt.Println("发生了 panic:", r)
        }
    }()

    panic("出错了")
}

このプログラムでは、遅延関数を使用します。遅延関数は、現在のコード ブロックの終了前に実行されます。そのため、プログラムがパニックになったときに回復操作を実行できます。

recover 関数では、パニック エラー メッセージを保存し、端末に表示します。このサンプル プログラムを実行すると、次の出力が表示されます。

发生了 panic: 出错了

上記のサンプル プログラムでは、panic 関数をトリガーし、defer で回復関数を使用して回復しました。 defer でリカバリ関数を実行してパニックをキャプチャし、パニックが発生しても defer 関数で対処できます。

つまり、golang では、panic はプログラム フロー内の例外を簡単に処理できます。パニック メカニズムは、各 Go プログラムのスタック トレース情報を記録し、この情報を使用してエラーを報告できます。パニック メカニズムは非常に強力ですが、プログラム全体の安定性に影響を与えないよう、実際のプログラミングでは注意して使用する必要があることに注意してください。

以上がgolang パニックの標準エラーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。