Go でのエラー処理のベスト プラクティス
Go を使用する場合、エラー処理は堅牢なコードを確保するために不可欠な要素です。 if err != nil を使用してエラーをチェックする標準的な方法は慣用的ですが、繰り返しが多く冗長になる可能性があります。
エラー処理のイディオム
短いエラー宣言: 宣言と処理には省略構文を使用します。同時エラー:
if err := rows.Scan(&some_column); err != nil { // Handle error }
エラー ラッピング: 追加のコンテキストを提供するために内部エラーをラップ:
func getUserName(id int) (string, error) { user, err := getUserFromDatabase(id) if err != nil { return "", fmt.Errorf("Error getting user: %w", err) } // ... }
エラークリーンアップ
defer の使用: エラーが発生したかどうかに関係なく、クリーンアップ アクションが常に実行されるようにするには、defer を使用します:
func writeFile(filePath string, data []byte) error { f, err := os.Open(filePath) if err != nil { return err } defer f.Close() // ... }
パニックの使用回復: 回復不可能なエラーを適切に処理するためにライブラリ関数によってスローされたパニックから回復します:
func safeFunction() (err error) { defer func() { if r := recover(); r != nil { err = fmt.Errorf("A panic occurred: %v", r) } }() // Unsafe code that can panic }
追加のヒント
結論:
Go の慣用的なエラー処理手法は効果的で堅牢です。これらのプラクティスを活用することで、コード内のエラー処理を改善し、コードを読みやすく、エラーを防止し、デバッグを容易にすることができます。
以上がGo コードのエラー処理を改善するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。