|
|
|
исключения и плохой стиль
|
|||
|---|---|---|---|
|
#18+
Насколько это плохой стиль использовать исключения не для обработки ошибок, а, скажем, как некий расширеный return, который можно перехватить на верхних уровнях без return'ов-посредников или как какой-нибудь другой способ использования отличный от обработок ошибок? например, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 01:27 |
|
||
|
исключения и плохой стиль
|
|||
|---|---|---|---|
|
#18+
Исключение правильно использовать только для обработки ошибок. Организация передачи управления и результатов через исключения - дурной стиль. А что мешает создать класс, структуру или enum и возвращать объект этого типа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 11:16 |
|
||
|
исключения и плохой стиль
|
|||
|---|---|---|---|
|
#18+
Использовать исключения не по назначению - очень плохой стиль. Но в приведемнном фрагменте кода ничего плохого не видно. "расширеный return, который можно перехватить на верхних уровнях без return'ов-посреднико" - это можно считать как упрощенное определение exception-ов, ничего плохого здесь нет, потому что это - суть exception-ов, то , для чего они и создавались. Одно можно сказать определенно - exception должен выбрасываться только в случае, когда функция не может продолжить свое выполнение и не может вернуть какое-то осмысленное значение вызывающей функции или не может сделать действие, для выполнения которого ее вызвали, и невыполнение этого действия повлечет бессмысленность дальнейшего выполнения вызывающей функции. Короче, злоупотреблять exception-ами нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 11:28 |
|
||
|
исключения и плохой стиль
|
|||
|---|---|---|---|
|
#18+
MasterZiv Короче, злоупотреблять exception-ами нельзя. это да, конечно, только где грань между "употреблением" и "злоупотреблением"? вообще я на форуме rsdn.ru такую тему встречал. там тоже солидно обсуждали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 11:35 |
|
||
|
исключения и плохой стиль
|
|||
|---|---|---|---|
|
#18+
имхо, плохим стилем это считается только в том случае, если есть вероятность вместо этого "расширенного returnа" получить реальное исключение, вызванное каким-нибудь не правельным действием. хотя в таком случае тоже ничего не мешает проверить, то ли это исключение, которое мы ждем и если не так - считать его ошибкой и поступать с ним как обычно: ShowError(exception.text); Application->Terminate(); :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 14:51 |
|
||
|
исключения и плохой стиль
|
|||
|---|---|---|---|
|
#18+
alex_kэто да, конечно, только где грань между "употреблением" и "злоупотреблением"? Ага, а где грань между кодированием, и программированием как искусством ? Ты давай конкретный пример приведи, а мы рассмотрим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 18:45 |
|
||
|
исключения и плохой стиль
|
|||
|---|---|---|---|
|
#18+
Да, чего только люди не придумают... Вы бы хоть сказали - зачем это нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 20:03 |
|
||
|
исключения и плохой стиль
|
|||
|---|---|---|---|
|
#18+
MasterZiv alex_kэто да, конечно, только где грань между "употреблением" и "злоупотреблением"? Ага, а где грань между кодированием, и программированием как искусством ? Ты давай конкретный пример приведи, а мы рассмотрим. рискну привести пример я :-) помнится мне, давным давном, нас били длинной придлинной линейкой по рукам за использование goto, однако с некоторой оговоркой, смысл которой заключался в том, что это лучший способ выпрыгнуть из многовложенного цикла, но только вниз и в пределах этой функции. т.е. Код: plaintext 1. 2. 3. 4. 5. 6. Страуструп как пример, в качестве альтернативы использования throw,предлагает выпрыгивать из глубоко вложеной рекурсии , например, при глубоком рекурсивном поиске в дереве. Считается, что это весьма элегантный механизм возврата. Однако, с оговоркой, что исключения стоит использовать, когда традиционные управляющие структуры менее эффективны (if, for и тд) или их использование невозможно, т.к. неумереное употребление исключений ведёт к непонятному коду, посколько код уже не делится на две категории: обыкновенные код, и код обработки ошибок. Может у кого всё-таки есть опыт удачного применения исключений как альтернативы обработке ошибок? :-) p.s. 2 MasterZiv rsdn почитал, очень многое для себя прояснил, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 22:57 |
|
||
|
исключения и плохой стиль
|
|||
|---|---|---|---|
|
#18+
извиняюсь за путаницу :-) спасибо alex_k за намёк про rsdn.ru :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2004, 23:10 |
|
||
|
исключения и плохой стиль
|
|||
|---|---|---|---|
|
#18+
Дурной стиль. Код потом становится нечитаемым. Даже сам в нем не разберешься через 2 месяца. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2004, 00:09 |
|
||
|
исключения и плохой стиль
|
|||
|---|---|---|---|
|
#18+
Есть положительный опыт применения исключений в не совсем исключениях. В PL/SQL - братишке Ады. Например no_data_found в одних случаях ошибка, а в других наоборот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 01:23 |
|
||
|
исключения и плохой стиль
|
|||
|---|---|---|---|
|
#18+
Man555Насколько это плохой стиль использовать исключения не для обработки ошибок, а, скажем, как некий расширеный return, который можно перехватить на верхних уровнях без return'ов-посредников или как какой-нибудь другой способ использования отличный от обработок ошибок? ... тут такая фигня... 1) специально затачиваться не стоит... 2) точка принятия решения НЕ всегда находится на данном срезе исключения. Из второго имеем далеко идущие мысли...:) а) применение исключений должно быть более глобальным, чем конкретный код. Что позволяет сепарировать код по вертикали - тем самым повышая живучесть всего приложения в целом. б) стэк исключений должен документироваться, как воспринимаемой человеком кодировкой, так и иметь структуру идентификаторов для автоматизации обработки (правильной трактовки в точке принятия решения). в) в точке принятия решения мы и делаем вывод - что делать...прокидывать исключение выше, детектировать исключение как ошибку, игнорировать ошибку (вот последнии - наверное и созвучно с заданным вопросом)... на самом деле тема достаточно интересна. мона сказать, что придёться решать задачи о номенклаторе ошибок для программиста... о форме фиксации стэка ошибок и т.д.. с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 14:37 |
|
||
|
исключения и плохой стиль
|
|||
|---|---|---|---|
|
#18+
kolobok0 тут такая фигня... 1) специально затачиваться не стоит... 2) точка принятия решения НЕ всегда находится на данном срезе исключения. Из второго имеем далеко идущие мысли...:) а) применение исключений должно быть более глобальным, чем конкретный код. Что позволяет сепарировать код по вертикали - тем самым повышая живучесть всего приложения в целом. б) стэк исключений должен документироваться, как воспринимаемой человеком кодировкой, так и иметь структуру идентификаторов для автоматизации обработки (правильной трактовки в точке принятия решения). в) в точке принятия решения мы и делаем вывод - что делать...прокидывать исключение выше, детектировать исключение как ошибку, игнорировать ошибку (вот последнии - наверное и созвучно с заданным вопросом)... на самом деле тема достаточно интересна. мона сказать, что придёться решать задачи о номенклаторе ошибок для программиста... о форме фиксации стэка ошибок и т.д.. с уважением (круглый) Подписываюсь под каждым словом! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 15:42 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32807175&tid=2031901]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
152ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 438ms |

| 0 / 0 |
