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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
andryuha_st
0 / 0 / 0
Регистрация: 03.05.2014
Сообщений: 2
#1

Поймать exception, который вылетает при доступе к элементу пустого вектора - C++

27.05.2014, 18:03. Просмотров 237. Ответов 4
Метки нет (Все метки)

Подскажите как правильно поймать exception, который вылетает при доступе к 1 элементу пустого вектора.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <vector>
using namespace std;
 
 
int main()
{
    vector <int> a;
    try{
    cout << a[0];
    }
    catch(bad_alloc &e)
    {
        cerr << e.what();
        return -1;
    }
 
    return 0;
}
Вот мой вариант, но не рабочий
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2014, 18:03     Поймать exception, который вылетает при доступе к элементу пустого вектора
Посмотрите здесь:

Изменить значение элемента вектора, на который указывает итератор C++
При добавлении пустого конструктора копирования начинается какая-то ерунда C++
STL . Обращение к 12 элементу вектора C++
C++ Вылетает программа при удалении элемента вектора
C++ Сгенерировать элементы вектора А, который включает в себя 11 элементов в пределах от 5 до 15
C++ Ошибка при запуске пустого проекта
Вылетает на std::length_error exception C++
C++ Доступ к элементам вектора, который находится в map
C++ Доступ по итератору к элементу вектора
C++ Как напрямую обратиться к элементу объекта, который находится в векторе?
Доступ к элементу вектора строк через геттер C++
C++ Обращение к последнему элементу вектора

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Max Dark
шКодер самоучка
1656 / 1457 / 527
Регистрация: 09.10.2013
Сообщений: 3,314
Записей в блоге: 8
Завершенные тесты: 2
27.05.2014, 18:16     Поймать exception, который вылетает при доступе к элементу пустого вектора #2
http://www.cplusplus.com/reference/v...ector/operator[]/
operator[] не вызывает исключений, поведение при доступе вне размера не определено
те блок try - catch тут не работает и нужно проверять индекс в ручную перед доступом к элементу
0x10
2454 / 1626 / 238
Регистрация: 24.11.2012
Сообщений: 4,001
27.05.2014, 18:18     Поймать exception, который вылетает при доступе к элементу пустого вектора #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <stdexcept>
#include <vector>
 
using namespace std;
 
 
int main()
{
    vector <int> a;
    
    try {
        cout << a.at(0);
    } catch(const out_of_range& e) {
        cerr << e.what();
    }
 
    return 0;
}
zss
Модератор
Эксперт С++
6242 / 5845 / 1891
Регистрация: 18.12.2011
Сообщений: 14,972
Завершенные тесты: 1
27.05.2014, 18:21     Поймать exception, который вылетает при доступе к элементу пустого вектора #4
Я в MS help нашел такое
_SECURE_SCL_THROWS
If defined as 1, an out of range iterator use causes an exception at runtime. If defined as 0, the program is terminated by calling invalid_parameter.
Т.е. где-то надо вставить
C++
1
#define _SECURE_SCL_THROWS 1
andryuha_st
0 / 0 / 0
Регистрация: 03.05.2014
Сообщений: 2
27.05.2014, 19:32  [ТС]     Поймать exception, который вылетает при доступе к элементу пустого вектора #5
0x10, спасибо, заработало )
Yandex
Объявления
27.05.2014, 19:32     Поймать exception, который вылетает при доступе к элементу пустого вектора
Ответ Создать тему
Опции темы

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