|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.05.2012, 15:58 | #1 |
Пользователь
Регистрация: 03.05.2012
Сообщений: 21
|
Обработка ошибок диапазона
Здравствуйте. Помогите разобраться с такой проблемой.
Сейчас в книге нашел вот такой пример. Сначала вводятся некоторое количество положительных целых чисел и они записываются в конец вектора. Для завершения ввода нужно ввести любое отрицательное число. Здесь специально предусмотрена ошибка выхода за границы вектора. Но она почему-то не отлавливается. То есть программа просто аварийно завершается и выходит сообщение об ошибке. Просто никак не могу понять, почему то, что написано в блоке catch не выполняется? Код:
Последний раз редактировалось Trigger man; 08.05.2012 в 16:24. |
08.05.2012, 16:29 | #2 |
Пользователь
Регистрация: 22.04.2012
Сообщений: 27
|
Обработка ошибок диапазона
Вы не обрабатываете ошибку ввода (отрицательное) и программа завершается по "утверждению" (assertion).
Вот так будет обрабатывать исключение - Код:
Код:
Последний раз редактировалось SergeyCh; 08.05.2012 в 16:34. |
08.05.2012, 16:29 | #3 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Видимо out_of_range это исключение которое генерируется не оператором [], а функцией vector::at()
Код:
Последний раз редактировалось EUGY; 08.05.2012 в 16:35. |
08.05.2012, 16:58 | #4 |
Пользователь
Регистрация: 03.05.2012
Сообщений: 21
|
EUGY, Вот так все правильно получается. Спасибо. Хотя вот непонятно, почему же в книге Страуструпа совсем по другому написано. Ну неважно. Главное программа правильно работает и хорошо.
И SergeyCh тоже чем-то помог. Теперь хоть буду знать как при отрицательных числах исключения генерировать. |
08.05.2012, 17:02 | #5 | |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Цитата:
|
|
08.05.2012, 17:10 | #6 |
Пользователь
Регистрация: 03.05.2012
Сообщений: 21
|
Вот скриншот сделал. Тут ни слова нет про функцию at() а просто используются квадратные скобки v[i]
|
08.05.2012, 17:19 | #7 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Мда, старикан погорячился с примером ...
|
08.05.2012, 17:24 | #8 | |
Пользователь
Регистрация: 03.05.2012
Сообщений: 21
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обработка ошибок | mikebrownen | Общие вопросы C/C++ | 1 | 21.10.2011 09:51 |
Обработка ошибок | kardinal94 | Общие вопросы Delphi | 2 | 21.11.2010 20:23 |
Обработка ошибок | Liones | БД в Delphi | 12 | 04.12.2008 07:22 |
Обработка ошибок | Ivanich | JavaScript, Ajax | 1 | 24.04.2008 22:49 |
Обработка ошибок. | Serviceprofi | Помощь студентам | 7 | 19.11.2007 15:12 |