Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / исключения и плохой стиль / 13 сообщений из 13, страница 1 из 1
01.12.2004, 01:27
    #32806741
Man555
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
исключения и плохой стиль
Насколько это плохой стиль использовать исключения не для обработки ошибок, а, скажем, как некий расширеный return, который можно перехватить на верхних уровнях без return'ов-посредников или как какой-нибудь другой способ использования отличный от обработок ошибок?

например,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
class e { 
   private: 
         string msg; 
   public: 
         e(const string s) : msg(s) {}; 
        string get_message(void) const {return msg; };
};
void f1()
{
 try { 
   f(); 
 }
 catch(e& expt) {
  cout << expt.get_message();
 }
}
...
Рейтинг: 0 / 0
01.12.2004, 11:16
    #32807175
Ustazz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
исключения и плохой стиль
Исключение правильно использовать только для обработки ошибок. Организация передачи управления и результатов через исключения - дурной стиль.

А что мешает создать класс, структуру или enum и возвращать объект этого типа?
...
Рейтинг: 0 / 0
01.12.2004, 11:28
    #32807207
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
исключения и плохой стиль
Использовать исключения не по назначению - очень плохой стиль. Но в приведемнном фрагменте кода ничего плохого не видно.
"расширеный return, который можно перехватить на верхних уровнях без return'ов-посреднико" - это можно считать как упрощенное определение exception-ов, ничего плохого здесь нет, потому что это - суть exception-ов, то , для чего они и создавались.

Одно можно сказать определенно - exception должен выбрасываться только в случае, когда функция не может продолжить свое выполнение и не может вернуть какое-то осмысленное значение вызывающей функции или не может сделать действие, для выполнения которого ее вызвали, и невыполнение этого действия повлечет бессмысленность дальнейшего выполнения вызывающей функции.

Короче, злоупотреблять exception-ами нельзя.
...
Рейтинг: 0 / 0
01.12.2004, 11:35
    #32807224
alex_k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
исключения и плохой стиль
MasterZiv
Короче, злоупотреблять exception-ами нельзя.
это да, конечно, только где грань между "употреблением" и "злоупотреблением"?

вообще я на форуме rsdn.ru такую тему встречал. там тоже солидно обсуждали
...
Рейтинг: 0 / 0
01.12.2004, 14:51
    #32807746
DarkCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
исключения и плохой стиль
имхо, плохим стилем это считается только в том случае, если есть
вероятность вместо этого "расширенного returnа" получить реальное
исключение, вызванное каким-нибудь не правельным действием.

хотя в таком случае тоже ничего не мешает проверить, то ли это исключение,
которое мы ждем и если не так - считать его ошибкой и поступать с ним как
обычно:
ShowError(exception.text);
Application->Terminate();
:))

...
Рейтинг: 0 / 0
01.12.2004, 18:45
    #32808338
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
исключения и плохой стиль
alex_kэто да, конечно, только где грань между "употреблением" и "злоупотреблением"?

Ага, а где грань между кодированием, и программированием как искусством ?
Ты давай конкретный пример приведи, а мы рассмотрим.
...
Рейтинг: 0 / 0
01.12.2004, 20:03
    #32808431
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
исключения и плохой стиль
Да, чего только люди не придумают... Вы бы хоть сказали - зачем это нужно?
...
Рейтинг: 0 / 0
01.12.2004, 22:57
    #32808539
Man555
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
исключения и плохой стиль
MasterZiv alex_kэто да, конечно, только где грань между "употреблением" и "злоупотреблением"?

Ага, а где грань между кодированием, и программированием как искусством ?
Ты давай конкретный пример приведи, а мы рассмотрим.

рискну привести пример я :-)
помнится мне, давным давном, нас били длинной придлинной линейкой по рукам за использование goto, однако с некоторой оговоркой, смысл которой заключался в том, что это лучший способ выпрыгнуть из многовложенного цикла, но только вниз и в пределах этой функции.

т.е.

Код: plaintext
1.
2.
3.
4.
5.
6.
for(...)
    for(...)
        for(...)
            for(...) {
               goto x;
            }

Страуструп как пример, в качестве альтернативы использования throw,предлагает выпрыгивать из глубоко вложеной рекурсии , например, при глубоком рекурсивном поиске в дереве. Считается, что это весьма элегантный механизм возврата. Однако, с оговоркой, что исключения стоит использовать, когда традиционные управляющие структуры менее эффективны (if, for и тд) или их использование невозможно, т.к. неумереное употребление исключений ведёт к непонятному коду, посколько код уже не делится на две категории: обыкновенные код, и код обработки ошибок.

Может у кого всё-таки есть опыт удачного применения исключений как альтернативы обработке ошибок? :-)

p.s. 2 MasterZiv rsdn почитал, очень многое для себя прояснил, спасибо.
...
Рейтинг: 0 / 0
01.12.2004, 23:10
    #32808542
Man555
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
исключения и плохой стиль
извиняюсь за путаницу :-) спасибо alex_k за намёк про rsdn.ru :-)
...
Рейтинг: 0 / 0
03.12.2004, 00:09
    #32810735
исключения и плохой стиль
Дурной стиль.

Код потом становится нечитаемым. Даже сам в нем не разберешься через 2 месяца.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
21.02.2006, 01:23
    #33557191
jelnw
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
исключения и плохой стиль
Есть положительный опыт применения исключений в не совсем исключениях.
В PL/SQL - братишке Ады. Например no_data_found в одних случаях ошибка,
а в других наоборот.
...
Рейтинг: 0 / 0
21.02.2006, 14:37
    #33558456
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
исключения и плохой стиль
Man555Насколько это плохой стиль использовать исключения не для обработки ошибок, а, скажем, как некий расширеный return, который можно перехватить на верхних уровнях без return'ов-посредников или как какой-нибудь другой способ использования отличный от обработок ошибок? ...

тут такая фигня...
1) специально затачиваться не стоит...
2) точка принятия решения НЕ всегда находится на данном срезе исключения.

Из второго имеем далеко идущие мысли...:)
а) применение исключений должно быть более глобальным, чем конкретный код. Что позволяет сепарировать код по вертикали - тем самым повышая живучесть всего приложения в целом.
б) стэк исключений должен документироваться, как воспринимаемой человеком кодировкой, так и иметь структуру идентификаторов для автоматизации обработки (правильной трактовки в точке принятия решения).
в) в точке принятия решения мы и делаем вывод - что делать...прокидывать исключение выше, детектировать исключение как ошибку, игнорировать ошибку (вот последнии - наверное и созвучно с заданным вопросом)...


на самом деле тема достаточно интересна. мона сказать, что придёться решать задачи о номенклаторе ошибок для программиста... о форме фиксации стэка ошибок и т.д..

с уважением
(круглый)
...
Рейтинг: 0 / 0
21.02.2006, 15:42
    #33558700
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
исключения и плохой стиль
kolobok0

тут такая фигня...
1) специально затачиваться не стоит...
2) точка принятия решения НЕ всегда находится на данном срезе исключения.

Из второго имеем далеко идущие мысли...:)
а) применение исключений должно быть более глобальным, чем конкретный код. Что позволяет сепарировать код по вертикали - тем самым повышая живучесть всего приложения в целом.
б) стэк исключений должен документироваться, как воспринимаемой человеком кодировкой, так и иметь структуру идентификаторов для автоматизации обработки (правильной трактовки в точке принятия решения).
в) в точке принятия решения мы и делаем вывод - что делать...прокидывать исключение выше, детектировать исключение как ошибку, игнорировать ошибку (вот последнии - наверное и созвучно с заданным вопросом)...


на самом деле тема достаточно интересна. мона сказать, что придёться решать задачи о номенклаторе ошибок для программиста... о форме фиксации стэка ошибок и т.д..

с уважением
(круглый)

Подписываюсь под каждым словом!
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / исключения и плохой стиль / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]