Go で予期しないエラーが発生してパニックが発生すると、プログラムの実行が直ちに停止されます。ただし、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()関数を使用できます。
func main() { defer func() { if err := recover(); err != nil { fmt.Println("Could not open file") } }() file, err := os.Open(os.Args[1]) if err != nil { panic(err) } fmt.Printf("%s", file) }
ファイルを開くときにエラーが発生した場合、パニックはrecover()関数によって捕捉されます。プログラムをクラッシュさせる代わりに、「ファイルを開けませんでした」というメッセージが表示されます。
Go では、パニックをデフォルトのエラー処理メカニズムとして使用すべきではありません。一般に、明示的なエラー チェックが推奨されます。ただし、recover() 関数は、パニックが必要な極端なケースを適切に処理する方法を提供し、予期しないエラーが発生した場合でもプログラムが機能状態を維持できるようにします。
以上がGo で「recover()」関数を使用してパニックに対処するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。