errors.New(mmask.ErrPathListEmpty)) {
}
зачем errors.New?
Там текст ошибки
Прочитайте документацию к пакету. Там в Overview написано как этим пользоваться https://pkg.go.dev/errors Вот более подробная статья про это https://go.dev/blog/go1.13-errors
То есть я так понял мне создавать нужно не const Err*** = "error ..." А сразу var Err*** = errors.New("error ...")
Вам нужно создать отдельный тип для вашей ошибки
😳 мне либо приснилось, но я видел как используется просто текст ошибки и возвращают его через errors New
не обязательно. можно конкретные переменые оборачивать (и лучше, удобнее)
Ну если не нужен тип ошибки, то можно так и сделать
Так вот не нужен тип. Вопрос был именно в том, как их сравнивать, если я возвращаю через errors New и как на уровне выше сравнить. Просто через err.Error() == ErrMyError ?
Так значит нужен тип
Вот так попробуй: if err != nil { switch e := err.(type) { case *ErrMyError: fmt.Println("This is custom error") default: fmt.Println("Another error") } }
Мне больше интересно почему вот так нельзя https://play.golang.org/p/qtrFU1d5apo
Если так возвращать - никак не сравнить
Потому что текст ошибки может быть не всегда одинаковым - там стектрейс может формироваться
Обсуждают сегодня