Go で関数エラーを処理する一般的なパターンは次のとおりです。 エラーを返す: 関数はエラー値を返します。成功した場合は nil を、失敗した場合はエラー タイプを返します。グローバル変数: グローバル変数を使用してエラー値を保存すると、関数がエラー値に簡単にアクセスして使用できるようになります。パニック: エラーが深刻で関数の実行を続行できない場合に使用され、関数は直ちに終了され、エラーが呼び出し元に伝達されます。遅延: defer ステートメントを使用して、関数が戻る前にコードを実行します。これは、関数の終了までクリーンアップ操作やエラー処理を遅らせるのに適しています。
Go での関数エラーの処理は、堅牢で信頼性の高いアプリケーションを構築するために重要です。エラー処理には一般的なパターンがいくつかあり、それぞれに独自の利点と欠点があります。
最も簡単な方法は、関数にエラー値を返すことです。操作が成功した場合、関数は nil を返します。それ以外の場合は、error
やカスタム エラー タイプなどのエラーを表すタイプを返します。
func divide(x, y int) (int, error) { if y == 0 { return 0, fmt.Errorf("cannot divide by zero") } return x / y, nil }
このメソッドは、グローバル変数を使用してエラー値を保存します。この利点は、関数が他の関数から呼び出された場合でも、エラー値に簡単にアクセスして使用できることです。
var err error func init() { // 初始化 err 变量 } func calculate() { // ... err = fmt.Errorf("an error occurred") } func handleError() { if err != nil { // 处理错误 } }
エラーが重大で関数の実行を続行できない場合は、パニックを使用できます。 Panic は関数をただちに終了し、そのエラーを呼び出し元に伝えます。
func someFunction() { // ... if err != nil { panic(err) } }
defer ステートメントは、関数が戻る前にコードを実行します。これにより、クリーンアップ操作やエラー処理を関数の終了まで延期できます。
func readFile() (string, error) { defer file.Close() // ... }
import ( "fmt" "io" "os" ) func readFile(path string) ([]byte, error) { file, err := os.Open(path) if err != nil { return nil, fmt.Errorf("open file: %w", err) } // 使用 defer 语句延迟关闭文件,确保在函数返回之前关闭 defer file.Close() // ... 读取文件内容 return data, nil }
以上がgolang関数のエラー処理モードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。