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 サイトの他の関連記事を参照してください。