エラーハンドリング

Goでは、エラー処理が重要です。

Finisher Methods の後にエラーチェックを行うことをおすすめします。

Error Handling

GORMでのエラーハンドリングは、メソッドチェーン可能なAPIのため、ふつうのGoコードとは異なります。

なんらかのエラーが発生した場合、GORMは *gorm.DBError フィールドに設定します。以下のようにチェックする必要があります:

if err := db.Where("name = ?", "jinzhu").First(&user).Error; err != nil {
// ここでエラーハンドリング
}

または

if result := db.Where("name = ?", "jinzhu").First(&user); result.Error != nil {
// ここでエラーハンドリング
}

ErrRecordNotFound

GORMは、First, Last, Takeでデータの検索に失敗した場合にErrRecordNotFoundを返します。もし複数のエラーが発生した場合は、errors.IsErrRecordNotFoundエラーを確認することができます。たとえば以下のように使います

// RecordNotFound エラーが返却されたかチェックする
err := db.First(&user, 100).Error
errors.Is(err, gorm.ErrRecordNotFound)

Dialect Translated Errors

If you would like to be able to use the dialect translated errors(like ErrDuplicatedKey), then enable the TranslateError flag when opening a db connection.

db, err := gorm.Open(postgres.Open(postgresDSN), &gorm.Config{TranslateError: true})

Errors

Errors List

Platinum Sponsors

Gold Sponsors

Platinum Sponsors

Gold Sponsors