Название: То что на совести программиста Отправлено: SABROG от Апрель 05, 2007, 17:33 Не раз задавался раньше вопросом на тему обработки ошибок. Часто вижу код, где кроме исключений ошибки почти не обрабатываются, если предусматривается, что их наличие маловероятно. Например код:
Код:
Это кусок из моей программы, тут видно, что проверка на ошибки идет только для второй инструкции setValue. Я бы мог ее продублировать или вынести в отдельный метод, который вызывать после каждой инструкции. Могу бы вообще не ставить проверку. Но хочу сделать по-совести. Одно дело, когда один ключ-параметр, а если их десятки ? Может использовать inline функции ? Хочется сделать по совести, но стоит ли обрабатывать все Error'ы от каждого класса ? Может есть "красивые" способы ? Название: То что на совести программиста Отправлено: bigirbis от Апрель 05, 2007, 17:50 Тут либо вынесение кода в отдельный метод, либо макрос, типа Q_ASSERT
Название: То что на совести программиста Отправлено: SABROG от Апрель 05, 2007, 18:01 Так ведь все равно будет нечто вроде этого:
Код:
Название: То что на совести программиста Отправлено: bigirbis от Апрель 05, 2007, 18:10 Можно еще обернуть вызов
settings->setValue(QLatin1String("DSN"),edtDSN->text()); и в получившейся обертке выбрасывать исключение а потом это все ловить... Код: void TForm::setValue(const QString & key, const QVariant & value) Название: Re: То что на совести программиста Отправлено: _govorilka от Апрель 06, 2007, 04:32 В ассистенте написано, что qWarning() - это "Debugging Techniques" (Технология отладки), использовать эту функцию в готовой (release) программе, мне кажется, не очень логично. Хотя это замечание не по теме.
Вариант: isError() code() isError() code() - это, как мне кажется, единственно возможное решение. Обработка исключений в с++, не что-иное, как тот же скрытый switch, закопанный глубого-глубоко. Один из моих учителей мне дал очень хороший совет - "везде, где руки тянутся к клавишам ctrl+c, ctrl+v - пиши обёртку" |