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

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

Восстановить пароль Регистрация
 
andryuha_st
0 / 0 / 0
Регистрация: 03.05.2014
Сообщений: 2
27.05.2014, 18:03     Поймать exception, который вылетает при доступе к элементу пустого вектора #1
Подскажите как правильно поймать 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++ Вылетает программа при удалении элемента вектора
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
27.05.2014, 18:16     Поймать exception, который вылетает при доступе к элементу пустого вектора #2
http://www.cplusplus.com/reference/v...ector/operator[]/
operator[] не вызывает исключений, поведение при доступе вне размера не определено
те блок try - catch тут не работает и нужно проверять индекс в ручную перед доступом к элементу
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
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
Модератор
Эксперт С++
 Аватар для zss
5944 / 5549 / 1783
Регистрация: 18.12.2011
Сообщений: 14,175
Завершенные тесты: 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, который вылетает при доступе к элементу пустого вектора
Ответ Создать тему
Опции темы

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