выход индекса за пределы дозволеного, философия |
Здравствуйте, гость ( Вход | Регистрация )
выход индекса за пределы дозволеного, философия |
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 |
это-то понятно. Я для случая, если всё таки прозивал, то внутри оператора делать ли 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 |
|
|
|
Andrewshkovskii |
22.4.2010, 13:45
Сообщение
#17
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
memory access violation ?
вот тут обсуждалось Сообщение отредактировал Andrewshkovskii - 22.4.2010, 13:46 |
|
|
Litkevich Yuriy |
22.4.2010, 13:47
Сообщение
#18
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Tonal |
23.4.2010, 8:46
Сообщение
#19
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
В Винде возникает системное исключение STATUS_ACCESS_VIOLATION как правильно указал Andrewshkovskii.
Некоторые компиляторы в некоторых режимах умеют переводить системные исключения винды в исключения С++. Например MSVC с нужной опцией или багланд в режиме совместимости с делфой. В унихе возникает системный сигнал SIGSEGV. Читай, например, в википедии. |
|
|
Влад |
23.4.2010, 11:24
Сообщение
#20
|
Участник Группа: Участник Сообщений: 146 Регистрация: 20.3.2009 Из: Санкт-Петербург Пользователь №: 627 Спасибо сказали: 46 раз(а) Репутация: 8 |
имхо ассерты только для дебага. ну, в крайнем случае, можно их оставить на время приёмо-отладочных работ. но не в рабочей версии. Хм, так вроде бы assert() и имеет смысл только в дебажной версии; в release версии он раскрывается в "ничто" и исключается компилятором. Нет? А заказчику всяко поставляется Release сборка, но не Debug. Что же до "приёмо-отладочных работ", то (имхо) отладка ПО и приемо-сдаточные испытания (ПСИ) - это совершенно различные этапы работ, и второй может начинаться только после полного окончания первого. |
|
|
Текстовая версия | Сейчас: 30.11.2024, 9:55 |