golang
June 24
Обработка ошибок в Go: были ли попытки упростить синтаксис?
Go часто критикуют за многословный шаблон:
if err != nil { return err }
Даже IDE автоматом сворачивают данные блоки при открытии файла
Люди пытались предложить более лаконичные решения:
data := check(os.ReadFile("file.txt"))
Автоматически проверяет ошибку и делает return err, если она не nil.
data := try(os.ReadFile("file.txt"))
То же, что и check, но с ключевым словом try.
handle err { return fmt.Errorf("wrap: %w", err) } data := check(os.ReadFile("file.txt"))
- Усложняют язык
- Не всегда универсальны
- Нарушают принцип явности
- Go — за простоту, даже в ущерб краткости
В общем мне тоже ни один из вариантов не приглянулся, больше напомнило "магию" PHP (это не плохо, просто "магией" нужно правильно уметь пользоваться и часто это превращается в говнокод)