Re: обработка ошибок АД или Рай в избранное  новое ответить всё   подписка   модер. 
От: johny5www.moddb.com/games/tachyon-wars1
Дата: 04.02.12 12:12
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>Всем привет


J>то ли я криворукий то ли это дейсвительно АД

J>какую Вы оценку поставите себе по пятибальной шкале
J>в умении писать программы с хорошо организованной
J>одностилевой системой обработки ошибок
J>я себе ставлю 1 у меня получается полный ахтунг
J>стыдно было бы показать хотя вроде и программирую
J>не первый день уже пора бы и научиться в чем дело
J>не знаю сейчас смотрю тут на свою писанину последних
J>месяцев и волосы на голове дыбом это не обработка
J>ошибок это АД на земле

Трудно догадаться что именно у вас плохо, но предположу что это Си-шный стиль обработки ошибок

ValueA* a = f();
if( !a )
    return false;

ValueB* b = g();
if( !b )
    return false;

...


Если это так, то пора для себя открыть exceptions. Я программирую обычно так, будто ошибок в программе вообще не возникает. Т.е. я делаю предположения (ASSERTions) что ошибок не возникает. Т.е. где я сделал такое предположение, я вставляю ASSERT. В дебаге он стрельнёт меня в дебагер, прервя выполнение программы, в релизе оно кинет исключение, т.к. если предположение нарушено то и дальнейшее выполнение программы невозможно.

Тогда код превращается вот в это:
const ValueA& a = f();
const ValueB& b = g();
...


собсвтенно f()/g() тогда выглядят вот так:
const ValueA& f()
{
    p = .. search in container ..
    ASSERT(p != end());
    return *p;
}