Goでは、エラー処理が重要です。
Finisher Methods の後にエラーチェックを行うことをおすすめします。
Error Handling
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 { |
ErrRecordNotFound
GORMは、First
, Last
, Take
でデータの検索に失敗した場合にErrRecordNotFound
を返します。もし複数のエラーが発生した場合は、errors.Is
でErrRecordNotFound
エラーを確認することができます。たとえば以下のように使います
// RecordNotFound エラーが返却されたかチェックする |
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}) |