Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

C++ exceptions: за и против

183  1 2 все
Simple Nothing is f*cked26.06.07 22:24
Simple
NEW 26.06.07 22:24 
в ответ Murr 26.06.07 22:09
В ответ на:
Затем, что возникновение ошибки есть ситуация не нормальная - подлежит исследованию на предмет причины возникновения и доработке на предмет устранения - что затруднительно, не зная где оно возникло...

Конкретно в этом случае как ты собрался исследовать причину?
В ответ на:
Ексептион кэтчится на заданном уровне, устраняется причина, при возможности - пересоздается объект и все продолжает работать как если бы ситуации не возникало... и это - без всяких глупостей с проверками на ноль...

Угу, а для этого переписывается огромное кол-во продуктивного кода, для чего нанимается еще столько же людей, сколько уже работают...
В ответ на:
Не скажу за все - возможно, что где-то, например, когда длл-ка "исполняется" как отдельная задача, есть смысл для такого ограничения.
У меня, однако, гораздо чаще ситуация, когда расширяется объект из длл-ки - так что без этого - никак.

Это да.
В ответ на:
Да ну? Я вот как-то привык к тому, что выбрасываемое исключение, если уж оно выпало, т.е. не обработано/разрезолвлено, из конструктора, содержит не "смещение в коде относительно соответствующего сегмента", а нормальное описание проблемы - в конструкторе класса такого-то, невозможно создать агрегированный объект такой-то, по причине... дальше идет описание проблемы возникшей в конструкторе или методе агрегированного объекта... и т.п. Чем более полная и точная информация получается - тем проще понять что именно не так и устранить причину проблемы.

Опять тебя заносит... Важно, что объект не будет создан, если исключение бросается из к-ра, а в твоем случае он создан будет, и это неправильно.
No, look. I do mind. The Dude minds. This will not stand, ya know, this will not stand, man. (c)
Все о бильярде
#21 
Murr коренной житель26.06.07 22:54
Murr
NEW 26.06.07 22:54 
в ответ Simple 26.06.07 22:24
Конкретно в этом случае как ты собрался исследовать причину?
------
??? - bad_alloc? У тебя только простые объекты? Или все же что-то достаточно сложное?
Если у тебя вся проблема только в одном вызове - malloc/calloc - перегрузи new и забудь об ней.
Вот когда ты перестанешь понимать, в каком конкретно месте получается нехватка памяти -
тогда вернешься к Исключениям и их причинам.
для этого переписывается огромное кол-во продуктивного кода
------
Разумеется. Только это - аргумент Шефа. Мало того, придется нанимать не в двое, а, примерно, в трое (цифра - пока без объяснений) больше людей.
Важно, что объект не будет создан, если исключение бросается из к-ра, а в твоем случае он создан будет, и это неправильно.
------
Ты опять - читаешь или где? Прямо же написано - пойман Эксептион и устранена, если она может быть устранена, причина, затем объект пересоздан. Если причина не может быть устранена - в новом Эксептионе дается детальное описание проблемы, а объект, как ему и положено, не создается. Кроме этого - при необходимости - нормально, т.е. вызовом деструкторов, прибиваются все созданные агрегированные и связанные, например - в других процессах, объекты, к которым просто невозможно, хранится - хандле, другим способом добраться.
#22 
Simple Nothing is f*cked26.06.07 23:32
Simple
NEW 26.06.07 23:32 
в ответ Murr 26.06.07 22:54
В ответ на:
Разумеется. Только это - аргумент Шефа.

Естественно. Как и то, что никто этого делать не будет, вот и вся любовь :)
#23 
Murr коренной житель27.06.07 01:52
Murr
NEW 27.06.07 01:52 
в ответ Simple 26.06.07 23:32
никто этого делать не будет
-----
Значит у работничков будет в три раза больше работы. Только и делов-то...
#24 
Simple Nothing is f*cked27.06.07 09:34
Simple
NEW 27.06.07 09:34 
в ответ Murr 27.06.07 01:52
Данунах. Обоснуй.
#25 
Murr коренной житель27.06.07 17:39
Murr
NEW 27.06.07 17:39 
в ответ Simple 27.06.07 09:34
Нее, батенька, дануегонах...
Бо, я только что спрыгнул с точно такого же проекта... Довел до релиза и ушел.
Шеф, изначально, выделил _три_ дня на переход. Я сказал, что невозможно.
После этого лимит был увеличен до... 10 рабочих дней. Т.е. до двух недель
при 10 рабочих часах в день... Я не стал спорить - срок все одно не реальный -
но сказал коллегам, что что-то реальное может быть на выходе через, примерно,
три месяца. Реально до релиза прошло почти 4 месяца...
#26 
AlexNek свой человек30.06.07 01:05
AlexNek
NEW 30.06.07 01:05 
в ответ Simple 26.06.07 15:56
>Шеф против исключений
Это ключевая фраза. . Исключения не нужны
Немецкого шефа переубеждать смысла нет, проверено на собственном опыте.
#27 
  Chipolino местный житель30.06.07 08:35
NEW 30.06.07 08:35 
в ответ Simple 27.06.07 09:34
Ну так чем дело закончилось ?
Рассказывай .
#28 
Simple Nothing is f*cked30.06.07 13:08
Simple
NEW 30.06.07 13:08 
в ответ Chipolino 30.06.07 08:35
Пока еще не закончилось :)
#29 
1 2 все