Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Исключения: за и против / 25 сообщений из 158, страница 1 из 7
20.02.2007, 11:43
    #34343268
selinoth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
Как вы относитесь к исключениям (exceptions)? С какими проблемами вы сталкивались, используя их и какие задачи с их помощью удавалось решить?

В данный момент я работаю над масштабным проектом, в котором исключения запрещены идеологией. Основание для отказа от исключений - трудности с отладкой (запутывание call stack) невозможность отлова утечек памяти и т.п. Что вы думаете по этому поводу?
...
Рейтинг: 0 / 0
20.02.2007, 11:50
    #34343300
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
selinothКак вы относитесь к исключениям (exceptions)? С какими проблемами вы сталкивались, используя их и какие задачи с их помощью удавалось решить?


Исключительно положительно. Никаких проблем нет, решаемые задачи - это обработка ошибок и исключительных ситуаций.

Проблемы которые могут быть - это
1) относительная медленность работы исключений (естественно только в случае throw).
2) понимание разработчиками , когда должны быть использованы исключения.
А именно - когда дальнейшая работа функции НЕВОЗМОЖНА.

selinoth
В данный момент я работаю над масштабным проектом, в котором исключения запрещены идеологией. Основание для отказа от исключений - трудности с отладкой (запутывание call stack) невозможность отлова утечек памяти и т.п. Что вы думаете по этому поводу?

Чушь собачья. Однако использование исключений в коде, который изначально не был готов к ним, может быть проблемно.
...
Рейтинг: 0 / 0
20.02.2007, 11:59
    #34343353
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
Когда то бывает удобней использовать исключения, когда то удобней обойтись без них. Всегда можно обойтись без исключений. Принципиальный отказ от исключений приводит к потенциальному не рацианальному коду.
...
Рейтинг: 0 / 0
20.02.2007, 12:07
    #34343397
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
selinothВ данный момент я работаю над масштабным проектом, в котором исключения запрещены идеологией. Основание для отказа от исключений - трудности с отладкой (запутывание call stack) невозможность отлова утечек памяти и т.п. Что вы думаете по этому поводу?

Человек, который пытается навязать такую идеологию, очевидно не компетентен в вопросах программирования С++. Постарайтесь убедить его в обратном. Опишите сложности программирования без обработки исключений вообще. Приведите статистику увеличения человеко-часов на написание кода и отладку. Желательно подкрепить эти слова конкретными цифрами (в рублях). Действует отрезвляюще.
...
Рейтинг: 0 / 0
20.02.2007, 12:41
    #34343528
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
selinothКак вы относитесь к исключениям (exceptions)? С какими проблемами вы сталкивались, используя их и какие задачи с их помощью удавалось решить?

В данный момент я работаю над масштабным проектом, в котором исключения запрещены идеологией. Основание для отказа от исключений - трудности с отладкой (запутывание call stack) невозможность отлова утечек памяти и т.п. Что вы думаете по этому поводу?

Единственным достойным аргументом для запрета использования исключений является переносимость. Многие компиляторы для встроенных ОС не умеют работать с исключениями или делают это криво, например Symbian.
Другим аргументом может быть "совместимость" с существующим кодом. Но и там можно писать с исключениями, главное чтобы не выпускать их в код, который их не поддерживает.
...
Рейтинг: 0 / 0
20.02.2007, 14:59
    #34344095
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
selinothОснование для отказа от исключений - трудности с отладкой (запутывание call stack) невозможность отлова утечек памяти и т.п. http://www.relisoft.com/resource/resmain.html
...
Рейтинг: 0 / 0
20.02.2007, 15:19
    #34344210
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
selinothКак вы относитесь к исключениям (exceptions)? С какими проблемами вы сталкивались, используя их и какие задачи с их помощью удавалось решить?

В данный момент я работаю над масштабным проектом, в котором исключения запрещены идеологией. Основание для отказа от исключений - трудности с отладкой (запутывание call stack) невозможность отлова утечек памяти и т.п. Что вы думаете по этому поводу?

есть такая вещь - суда...те которые ходят по рекам и морям... раньше их строили из одной большей миски ("Адльф Гитлер" вспоминаем, лежащий на дне Чёрного - возле Новороссийска)... затем стали делать корабли - секционными (дабы при катастрофе, заполнялся водой не весь корпус а только его незначитильная часть)..

дык вот, ловушки исключений - именно так и можно воспринимать (как секции, увеличивающие запас плавучести Вашего кода). ОЧЕНЬ актуально, когда разработчик и клиент отделены неким НЕ нулевым расстоянием друг от друга...


с уважением
(круглый)
...
Рейтинг: 0 / 0
20.02.2007, 16:15
    #34344485
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
selinothКак вы относитесь к исключениям (exceptions)? С какими проблемами вы сталкивались, используя их и какие задачи с их помощью удавалось решить?


Очень положительно.

По поводу задач.

Если проект большой то используются везде и всегда.
При наличии рекурсивных алгоритмов использую исключения
даже в минимальных проектах.



Используются когда на этапе разработки модуля
еще не извесно будущее поведение в зависимости от ситуации.
Или Если не извесно где ситуацию дешевле обрабатывать.

По ходу тестирования и развития это выясняется и throw заменяется на локальный обработчик
или return
или пишется обработчик исклюения в нужном месте.

На первом этапе разработки все потенциально убойные ситуации
выбрасывают исключения.
По мере формирования билда их становится все меньше и меньше.

По опыту очень ускоряется процесс отладки и поиск багов и
сокращается количество фич вызванных непредвиденным поведением.

Если в проекте, где то уже используется assert,
то использование вместо него исключений повышает удобство отладки.
В классе искюлчения можно сохранить гораздо больше информации для анализа
возникшей ситуации.



selinoth
В данный момент я работаю над масштабным проектом, в котором исключения запрещены идеологией. Основание для отказа от исключений - трудности с отладкой (запутывание call stack) невозможность отлова утечек памяти и т.п. Что вы думаете по этому поводу?

По поводу стека я проблем не вижу. Он просто раскручивается до catch.

По памяти и межпроцессному взамодействию, да есть,
нужно внимательно подходить к вопросу дизайна.

В этом есть положительный момент, при разработке дизайна тратится
лишний час, зато экономится неделя при отладке.
Проект дисциплинируется с самого начала.
...
Рейтинг: 0 / 0
20.02.2007, 17:56
    #34344903
Исключения: за и против
О! Ваня хочет сказать
1. Когда ошибку можно обработать на месте, ее нужно обрабатывать на месте.
2. Если ошибка должна обрабатываться выше, то можно из функции вернуть код ошибки или возбудить исключение. Естественно, оба способа требуют проектирования - нужно будет спроектировать иерархию исключений или прописать в документации по разработке, что означают коды ошибок. Самый явный пример - библиотека. Некоторые ошибки ее исполнения разработчики не исправляют, а возбуждают исключение или возвращают код ошибки. А прикладной программист, использующий библиотеку, дальше уже обрабатывает ошибку.
...
Рейтинг: 0 / 0
20.02.2007, 18:36
    #34345014
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
ivan________________...прописать в документации по разработке, что означают коды ошибок...

О да! Занятие, которым девелоперы себя не утруждают. Обычно вместо перечня ошибок в мануале имееи место скупая запись "...обратитесь в службу поддержки и.т.д".

Впрочем, это оффтоп!
...
Рейтинг: 0 / 0
20.02.2007, 19:55
    #34345187
A. Fig Lee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
а шо у нас со скоростью работы программ напичканых ексепшинами?
Ась?
...
Рейтинг: 0 / 0
21.02.2007, 10:43
    #34346121
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
A. Fig Leeа шо у нас со скоростью работы программ напичканых ексепшинами?
Ась?

А что есть проблемы со скоростью?
С нынешними частотами и памятью об этом мало кто задумывается.

ИХМО скорость выхода из функции по исключению приблизительно равна возврату
стекового обьекта( экземпляра класса).


На данном этапе развития ИТ скорость разработки, отладки и поддержки
гораздо более важный критерий нежели быстродействие конечного продукта.
...
Рейтинг: 0 / 0
21.02.2007, 12:25
    #34346540
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
я лично против (рабочий код всегда будет рабочим), но видел примеры, где точно не обойтись без исключений.

например, есть прога, котрая пытается реализовать свою "память". причем по огранизации задачи (тз) эта память - дырявая. и сколько бы вы ни хотели. но определить по адресу, можно туда пистаь или нет нельзя. а поскольку эта память нахордиться в ОП, то при попытке записи в дыру вылетает исключение.

аффтопитезь: объект либо именован, либо не существует
...
Рейтинг: 0 / 0
21.02.2007, 12:58
    #34346700
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
Aklinя лично против (рабочий код всегда будет рабочим), но видел примеры, где точно не обойтись без исключений.

например, есть прога, котрая пытается реализовать свою "память". причем по огранизации задачи (тз) эта память - дырявая. и сколько бы вы ни хотели. но определить по адресу, можно туда пистаь или нет нельзя. а поскольку эта память нахордиться в ОП, то при попытке записи в дыру вылетает исключение.

аффтопитезь: объект либо именован, либо не существует

Если я правельно понял, про что речь, то в линухах вылетат сигнал.
...
Рейтинг: 0 / 0
21.02.2007, 15:49
    #34347564
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
A. Fig Leeа шо у нас со скоростью работы программ напичканых ексепшинами?
Ась?ну да, есть немного. И как, заметно?
...
Рейтинг: 0 / 0
21.02.2007, 15:50
    #34347572
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
хотя… а что быстрее, забубенить try/catch или десять ифов для проверки возвращённого значения?
...
Рейтинг: 0 / 0
21.02.2007, 16:38
    #34347782
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
maXmoхотя… а что быстрее, забубенить try/catch или десять ифов для проверки возвращённого значения?


Лучше switch
Который занимает 70% тела функции.

:)
...
Рейтинг: 0 / 0
21.02.2007, 18:21
    #34348199
A. Fig Lee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
maXmo A. Fig Leeа шо у нас со скоростью работы программ напичканых ексепшинами?
Ась?ну да, есть немного. И как, заметно?

Угу. Если писать программы для трейдинга - там каждая микросекунда на счету.
Или ввобще что-нибудь реалтайм.
...
Рейтинг: 0 / 0
21.02.2007, 18:24
    #34348210
A. Fig Lee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
maXmoхотя… а что быстрее, забубенить try/catch или десять ифов для проверки возвращённого значения?

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

Свитч особо не лучше ифа - если глянуть ассемблер. Просто выглядит приятнее.
...
Рейтинг: 0 / 0
21.02.2007, 18:27
    #34348216
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
Akh Aklinя лично против (рабочий код всегда будет рабочим), но видел примеры, где точно не обойтись без исключений.

например, есть прога, котрая пытается реализовать свою "память". причем по огранизации задачи (тз) эта память - дырявая. и сколько бы вы ни хотели. но определить по адресу, можно туда пистаь или нет нельзя. а поскольку эта память нахордиться в ОП, то при попытке записи в дыру вылетает исключение.

аффтопитезь: объект либо именован, либо не существует

Если я правельно понял, про что речь, то в линухах вылетат сигнал.

нет, вы поняли неправильно.
я имел ввиду
1) я, собственно, против
2) есть исключительные единичные сутиации, где без исключений не обойтись.
...
Рейтинг: 0 / 0
21.02.2007, 18:37
    #34348254
A. Fig Lee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
Aklinя лично против (рабочий код всегда будет рабочим), но видел примеры, где точно не обойтись без исключений.

например, есть прога, котрая пытается реализовать свою "память". причем по огранизации задачи (тз) эта память - дырявая. и сколько бы вы ни хотели. но определить по адресу, можно туда пистаь или нет нельзя. а поскольку эта память нахордиться в ОП, то при попытке записи в дыру вылетает исключение.

аффтопитезь: объект либо именован, либо не существует

не верю. коряво написано значит. надо листы хранить выделенной памяти.
...
Рейтинг: 0 / 0
21.02.2007, 18:46
    #34348277
man_555
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
А я "за", потому что когда вызывается N + 1 функция из функции N, и в N + 1 функции происходит ошибка, а обработать её хочется в самой первой, то при классическом подходе надо написать N конструкций доставляющих ошибку наверх. Используя же try/catch, это делать не придётся.
...
Рейтинг: 0 / 0
21.02.2007, 18:56
    #34348294
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
man_555А я "за", потому что когда вызывается N + 1 функция из функции N, и в N + 1 функции происходит ошибка, а обработать её хочется в самой первой, то при классическом подходе надо написать N конструкций доставляющих ошибку наверх. Используя же try/catch, это делать не придётся.Да ну, глупости какие.... Во первых, большинство ошибок произошедших в функции N+1 ты будешь обрабатывать в функции N. А все необработаные просто return errorcode; и все.
А во вторых, ошибки произошедшие внутри функции N+1 обычно не имеют смысла для функции N-1. Для N-1 - функция N упала с ошибкой и эта ошибка принадлежит N. Функция N-1 просто не знает о существовании функции N+1 и ее списке возможных ошибок.
Есть такой принцип: инкапсуляция. К ошибкам он тоже применим.
...
Рейтинг: 0 / 0
21.02.2007, 18:59
    #34348302
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
man_555а обработать её хочется в самой первой, то при классическом подходе надо написать N конструкций доставляющих ошибку наверх.точняк, передаю код ошибки из любых дебрей проги в код возврата приложения. Это надо видеть.
...
Рейтинг: 0 / 0
21.02.2007, 19:13
    #34348329
man_555
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исключения: за и против
White Owl А все необработаные просто return errorcode; и все.

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


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