☕️ Вот что они предлагают: 1) Добавить конструкцию `check/handle` Похоже на классический try/catch. Каждую вызываемую функцию, проверяем специальным ключевым словом check. Если вернулась ошибка, то вызывается метод handle, где она уже обрабатывается. func run() error { handle err { return err } check one() check two() check three() return nil } 2) Добавить try/catch Тут все как в предыдущем варианте, но часть с handle не обязательно вызывать там же где вызывали метод catch. Либо try просто пробросит ошибку на уровень выше. func run() (err error) { try(one()) try(two()) try(three()) return nil } 3) Добавить спецсимволы чтобы очистить синтаксис Тут все как в примере с try, но теперь это слово заменено восклицательным знаком func run() (err error) { one()! two()! three()! return nil } 4) Упростить if err != nil Тут предлагают ввести тернарные операторы, чтобы сократить до одной строки func run() error { return record.ID == "" ? errors.New("empty id") : nil
Обработка ошибок в Go через if err != nil многим не дает покоя и энтузиасты хотят это как-то изменить
8 апреля8 апр
2
1 мин