Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
n := -1
if whereString, err := whereFunc(n), err != nil {
fmt.Fprint(os.Stderr, err)
return;
}
deleteFromTable(whereString)
n := -1
whereString, err := whereFunc(n)
deleteFromTable(whereString)
<source lang="go">
n := -1
whereString := whereFunc(n)
deleteFromTable(whereString)
n := -1
whereString, _ := whereFunc(n)
deleteFromTable(whereString)
Добавление переменной по ссылке в аргументы функции — довольно старый способ и выглядит не хуже, чем try-catch.
Нельзя в слое контроллера обрабатывать ошибки модели — что мы сможем сказать на этом уровне пользователю? Почему вообще должен слой контроллера знать хоть что-то об имлементации модели?
Например, если в контроллере есть catch MemcachedConnectionTimeoutException — значит контроллер знает про Memcached, а он вообще о модели знать ничего не должен, кроме API модели.
Однако все эти удобства имею стоимость, которую легко сформулировать:Исключения учат заботиться об ошибках не везде и постоянно, а только там и тогда, когда их реально как-то обработать.
Исключения учат разработчиков не заботиться об ошибках.
Крэши, вызванные исключениями