powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / исключения и плохой стиль
13 сообщений из 13, страница 1 из 1
исключения и плохой стиль
    #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
исключения и плохой стиль
    #32807175
Ustazz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исключение правильно использовать только для обработки ошибок. Организация передачи управления и результатов через исключения - дурной стиль.

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

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

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

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

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

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

Ага, а где грань между кодированием, и программированием как искусством ?
Ты давай конкретный пример приведи, а мы рассмотрим.
...
Рейтинг: 0 / 0
исключения и плохой стиль
    #32808431
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, чего только люди не придумают... Вы бы хоть сказали - зачем это нужно?
...
Рейтинг: 0 / 0
исключения и плохой стиль
    #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
исключения и плохой стиль
    #32808542
Man555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
извиняюсь за путаницу :-) спасибо alex_k за намёк про rsdn.ru :-)
...
Рейтинг: 0 / 0
исключения и плохой стиль
    #32810735
Дурной стиль.

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

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

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


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

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

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

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


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

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

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


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