В последнее (и не только последнее) время ломают много копий по поводу неудобства обработки ошибок в Go.
Суть претензий сводится к тому, что прямое использование:
customVar, err := call()
if err != nil {
doSomething(err)
return err
}
на больших количествах повторений гораздо менее удобно, чем классическое:
try {
String customVar = call();
} catch (BadException e) {
doSomething(e);
sendException();
}
Можно долго спорить как по самому предмету претензий, так и по поводу обходных манёвров, однако же логика в «пакетном» подходе действительно имеется.
В связи с чем у меня и возникла мысль по поводу обработки исключений без особого отхода от «Go-way». Вариант не рабочий — всего лишь моя фантазия.
Выглядело бы это так: