Error Handling

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

You are encouraged to do error check after any 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エラーを確認することができます。たとえば以下のように使います

// Check if returns RecordNotFound error
err := db.First(&user, 100).Error
errors.Is(err, ErrRecordNotFound)

Errors

Errors List