golang
June 24

Обработка ошибок в Go: были ли попытки упростить синтаксис?

Go часто критикуют за многословный шаблон:

if err != nil {
    return err
}

Даже IDE автоматом сворачивают данные блоки при открытии файла

Люди пытались предложить более лаконичные решения:

1. check

data := check(os.ReadFile("file.txt"))

Автоматически проверяет ошибку и делает return err, если она не nil.

2. try

data := try(os.ReadFile("file.txt"))

То же, что и check, но с ключевым словом try.

3. handle + check

Мой "любимчик"

handle err {
    return fmt.Errorf("wrap: %w", err)
}
data := check(os.ReadFile("file.txt"))

❌ Почему не приняли?

  • Усложняют язык
  • Не всегда универсальны
  • Нарушают принцип явности
  • Go — за простоту, даже в ущерб краткости

В общем мне тоже ни один из вариантов не приглянулся, больше напомнило "магию" PHP (это не плохо, просто "магией" нужно правильно уметь пользоваться и часто это превращается в говнокод)