Недавняя статья от команды Go напомнила:
if err != nil
остаётся основным способом обработки ошибок. Несмотря на десятки предложений, язык не уходит в магию, а сохраняет простоту и читаемость. И слава богу!
От себя добавлю: мне близка такая идеология. Ещё в C++ я впервые почувствовал радость, когда увидел
boost::error_code
— вместо try/catch можно было просто передавать ошибку по ссылке:
boost::system::error_code ec;
do_something(ec);
if (ec) {
// обработка ошибки
}
Никаких исключений, никакой ловли в неожиданных местах — всё явно и под контролем. Go взял эту идею и довёл до максимальной чистоты. Удобно, прозрачно, по делу.P.S. Подробно о работе с ошибками рассказываю в бесплатном уроке на своем курсе Go!
