Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
Andrewshkovskii |
22.4.2010, 12:10
Сообщение
#11
|
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1
|
Я так понял что BRE предлагает использовать проверку значения индекса на вхождение в range коллекции не в операторе [], а где-то выше по уровню реализации.
|
|
|
|
|
Litkevich Yuriy |
22.4.2010, 12:18
Сообщение
#12
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
это-то понятно. Я для случая, если всё таки прозивал, то внутри оператора делать ли assert или нет.
assert гарантировано завалит приложение, выдав на консоль номер строки и файла, в котором он сработал. А вот без него работа программы может продолжится (случалось) |
|
|
|
|
Andrewshkovskii |
22.4.2010, 12:26
Сообщение
#13
|
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1
|
А как ты можешь прозевать фиктивный индекс?
Всмысле, если ты организуешь механизм проверки индекса в отрезке коллекции, то я думаю что пропустить его как-то..не реально? |
|
|
|
|
BRE |
22.4.2010, 12:29
Сообщение
#14
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44
|
Цитата(Litkevich Yuriy @ 22.4.2010, 13:18) Link это-то понятно. Я для случая, если всё таки прозивал, то внутри оператора делать ли assert или нет. assert гарантировано завалит приложение, выдав на консоль номер строки и файла, в котором он сработал. А вот без него работа программы может продолжится (случалось) assert лучший друг программиста. IMHO, использовать обязательно. |
|
|
|
|
Iron Bug |
22.4.2010, 13:20
Сообщение
#15
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12
|
имхо ассерты только для дебага. ну, в крайнем случае, можно их оставить на время приёмо-отладочных работ. но не в рабочей версии. а так, честно ловить экспшны и выдавать информацию для пользователя (ну либо сразу формировать технический отчёт, который пользователь может выслать программисту).
|
|
|
|
|
Litkevich Yuriy |
22.4.2010, 13:34
Сообщение
#16
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(Iron Bug @ 22.4.2010, 17:20) Link а так, честно ловить экспшны а к стати какое-то конкретное исключение возникает при обращении в не разрешённую область памяти?
|
|
|
|
|
Andrewshkovskii |
22.4.2010, 13:45
Сообщение
#17
|
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1
|
memory access violation ?
вот Link обсуждалось Сообщение отредактировал Andrewshkovskii - 22.4.2010, 13:46 |
|
|
|
|
Litkevich Yuriy |
22.4.2010, 13:47
Сообщение
#18
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(Andrewshkovskii @ 22.4.2010, 17:45) Link memory access violation ? похоже что так
|
|
|
|
|
Tonal |
23.4.2010, 8:46
Сообщение
#19
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17
|
В Винде возникает системное исключение STATUS_ACCESS_VIOLATION как правильно указал Andrewshkovskii.
Некоторые компиляторы в некоторых режимах умеют переводить системные исключения винды в исключения С++. Например MSVC с нужной опцией или багланд в режиме совместимости с делфой. В унихе возникает системный сигнал SIGSEGV. Читай, например, в Link. |
|
|
|
|
Влад |
23.4.2010, 11:24
Сообщение
#20
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 146 Регистрация: 20.3.2009 Из: Санкт-Петербург Пользователь №: 627 Спасибо сказали: 46 раз(а) Репутация: 8
|
Цитата(Iron Bug @ 22.4.2010, 13:20) Link имхо ассерты только для дебага. ну, в крайнем случае, можно их оставить на время приёмо-отладочных работ. но не в рабочей версии. Хм, так вроде бы assert() и имеет смысл только в дебажной версии; в release версии он раскрывается в "ничто" и исключается компилятором. Нет? А заказчику всяко поставляется Release сборка, но не Debug. Что же до "приёмо-отладочных работ", то (имхо) отладка ПО и приемо-сдаточные испытания (ПСИ) - это совершенно различные этапы работ, и второй может начинаться только после полного окончания первого. |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 22.12.2025, 0:21 |