Error-checking smart pointer
Apr. 25th, 2016 07:58 pmКак вы, вероятно, знаете, в мире Windows до сих пор COM живее всех живых, и поскольку его должно быть можно использовать и из Си, работа с ошибками там построена на базе кодов возврата: функции обычно возвращают HRESULT, целое число, которое 0 если все ок, отрицательно при ошибке и положительно, если это как бы не ошибка, но и не совсем полный успех. Ошибки надлежит не игнорировать и не пропускать, как-то обрабатывать, однако очень часто вся обработка сводится к тому, чтобы прекратить выполнение текущей ф-ии и передать эту ошибку наверх. В языках вроде Go это превращается в код вида
и т.д. Каждая строчка превращается в четыре, в лучших традициях

( Read more... )
err := obj1.Action1(a, b) if err != nil { return err } err := obj1.Action2(c, d) if err != nil { return err } err := obj2.Action3(e) if err != nil { return err }
и т.д. Каждая строчка превращается в четыре, в лучших традициях

( Read more... )