Форум программистов, компьютерный форум CyberForum.ru

Не ловится исключение - C++

Восстановить пароль Регистрация
 
dev.nikor
 Аватар для dev.nikor
25 / 26 / 1
Регистрация: 26.07.2010
Сообщений: 297
02.05.2013, 13:37     Не ловится исключение #1
Здравствуйте, есть такой метод:
C++
1
2
3
4
5
6
7
8
9
bool Library::Remove(unsigned int bookNumber) {
    try {
        bookCollection.erase(bookCollection.begin() + bookNumber);
        return true;
    }
    catch(...) {
        return false;
    }
}
Пусть в bookCollection(вектор) у меня пусто. Если я передам в bookNumber, например, 5, метод должен вернуть false. Но на самом деле приложение крашится с таким сообщением: vector iterator + offset out of range.
Не подскажете, что не так? Мне надо, что бы исключение поймалось и метод вернул false.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2013, 13:37     Не ловится исключение
Посмотрите здесь:

исключение C++
C++ Необработанное исключение
C++ Не ловится исключение
исключение в if - else - if C++
исключение C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
02.05.2013, 13:49     Не ловится исключение #2
dev.nikor, странно.. Попробуй отдельно инициализировать итератор?
Примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
bool Library::Remove(unsigned int bookNumber) {
// здесь создаешь итератор (назовем его i)
    try {
i = bookCollection.begin() + bookNumber; //
        bookCollection.erase(i); //
        return true;
    }
    catch(...) {
        return false;
    }
}
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
02.05.2013, 13:57     Не ловится исключение #3
А с чего бы тут вообще должно быть исключение?
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
02.05.2013, 14:07     Не ловится исключение #4
Somebody, а разве при уходе за границе не кидается исключение у std-контейнеров?
dev.nikor
 Аватар для dev.nikor
25 / 26 / 1
Регистрация: 26.07.2010
Сообщений: 297
02.05.2013, 14:11  [ТС]     Не ловится исключение #5
nexen, не работает

Somebody, а что тут тогда?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
02.05.2013, 14:15     Не ловится исключение #6
Цитата Сообщение от nexen Посмотреть сообщение
а разве при уходе за границе не кидается исключение у std-контейнеров?
кидается только при использовании метода at
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2013, 14:28     Не ловится исключение
Еще ссылки по теме:

Исключение C++
C++ Необработанное исключение
C++ Необработанное исключение

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
02.05.2013, 14:28     Не ловится исключение #7
А тут вроде бы так: + эквивалентен ++ в цикле, ++ можно применять только к dereferenceable итераторам, а тут это не выполняется, когда доходит до конца контейнера.
Yandex
Объявления
02.05.2013, 14:28     Не ловится исключение
Ответ Создать тему

Метки
c++11
Опции темы

Текущее время: 17:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru