Goではエラーハンドリングが重要です。
You are encouraged to do error check after any Immediate Methods
エラーハンドリング
GORMにおけるエラーハンドリングは、チェーン可能なAPIのために、慣用的なGoのコードとは少し異なります。ですが、実装は簡単です。
何らかのエラーが起きた場合、GORMはそれを*gorm.DB
のError
フィールドにセットするので、このようにチェックを行うことができます:
if err := db.Where("name = ?", "jinzhu").First(&user).Error; err != nil { |
もしくは
if result := db.Where("name = ?", "jinzhu").First(&user); result.Error != nil { |
エラー
データを処理するときに、複数のエラーが発生するのはよくあることです。GORMはエラーをスライスとしてreturnするAPIを提供しています。
// 1つ以上のエラーが起きた場合、`GetErrors`は`[]error`を返します |
RecordNotFoundエラー
GORMはRecordNotFound
エラーを扱うためのショートカットを提供しています。複数のエラーが生じた場合は、その中にRecordNotFound
エラーが含まれているかチェックします。
// RecordNotFoundエラーを返すかチェックします |