에러 래핑
func getUser(id int) (*User, error) {
user, err := db.FindUser(id)
if err != nil {
return nil, fmt.Errorf("getUser(%d): %w", id, err)
}
return user, nil
}
// 에러 체인 검사
if errors.Is(err, sql.ErrNoRows) {
// 404 처리
}커스텀 에러 타입
type NotFoundError struct {
Resource string
ID int
}
func (e *NotFoundError) Error() string {
return fmt.Sprintf("%s %d not found", e.Resource, e.ID)
}
var target *NotFoundError
if errors.As(err, &target) {
// target.Resource, target.ID 사용
}
댓글 0