С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 05.07.2018
Сообщений: 14
1

Почему программа не обрабатывает исключение и при этом добавляет элемент вектору?

17.08.2021, 15:09. Показов 1819. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
По идеи программе следует выдать ошибку "range error", но вместо этого добавляет элемент вектору, может я слепой и что-то не так написал, пожалуйста, подскажите

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <bits/stdc++.h>
 
using namespace std;
int main()
{
    vector<int> v(4);
    
    try{
        int x;
        for (int i = 0; i <= v.size(); ++i){
            cout << "v[" << i << "] == " << v[i] << endl;
        }
    }catch(out_of_range){
        cout << "range error";
        return 1;
    }
 
    return 0;
}

Вот, что выдает консоль:
v[0] == 0
v[1] == 0
v[2] == 0
v[3] == 0
v[4] == 0
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.08.2021, 15:09
Ответы с готовыми решениями:

Программа загружает и обрабатывает веб-страницы с веб-сервера статистики, при этом жутко тормозит
Всем привет! В программе начались жуткие тормоза. Программа загружает и обрабатывает веб-страницы...

Почему оператор catch не обрабатывает исключение?
Не могу понять почему catch не обрабатывает заданное ему исключение: private static...

почему не добавляет элемент?
insert() должен добавить один элемент,но он неправильно работает,где ошибка? #include &quot;stdafx.h&quot;...

Не могу разобраться, почему при компиляции моя программа не работает? Варнингов 0 только вызывает исключение
Вообще нужно ввести в TextBox1 текст любого размера при нажатии на кнопку кодирования чтобы текст...

14
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
17.08.2021, 15:22 2
Используй
C++
1
v.at(i)
Добавлено через 3 минуты
std::vector<>::operator[] исключений не выбрасывает
1
Неэпический
18109 / 10696 / 2062
Регистрация: 27.09.2012
Сообщений: 26,933
Записей в блоге: 1
17.08.2021, 15:28 3
Цитата Сообщение от Fransy Посмотреть сообщение
По идеи программе следует выдать ошибку "range error"
С чего вы это взяли?
0
0 / 0 / 0
Регистрация: 05.07.2018
Сообщений: 14
17.08.2021, 15:47  [ТС] 4
Учусь по книге «Программирование: Принципы и практика с использованием C++», автором которой является Бьярн Страуструп, не думал, что встречу обман в данной книге, эх...
Миниатюры
Почему программа не обрабатывает исключение и при этом добавляет элемент вектору?  
0
0 / 0 / 0
Регистрация: 05.07.2018
Сообщений: 14
17.08.2021, 15:48  [ТС] 5
Данный код с книги, название которой написал выше, написал даже точь-в-точь, но результат иной
0
758 / 455 / 213
Регистрация: 19.12.2016
Сообщений: 1,815
17.08.2021, 15:57 6
Цитата Сообщение от TRam_ Посмотреть сообщение
std::vector<>::operator[] исключений не выбрасывает
Тут наверное не из std, а самописный класс.
0
0 / 0 / 0
Регистрация: 05.07.2018
Сообщений: 14
17.08.2021, 16:00  [ТС] 7
Как раз-таки std, у меня подключена библиотека, которая содержит все стандартные библиотеки C++, она так же является стандартной, не думаю, что что-то не то подключил или тому подобное
0
Неэпический
18109 / 10696 / 2062
Регистрация: 27.09.2012
Сообщений: 26,933
Записей в блоге: 1
17.08.2021, 16:00 8
Цитата Сообщение от Fransy Посмотреть сообщение
Учусь по книге
Так и думал. Там не std::vector
0
0 / 0 / 0
Регистрация: 05.07.2018
Сообщений: 14
17.08.2021, 16:03  [ТС] 9
vector генерирует исключения или нет? Так и не понял.Не хочется верить в то, что Страуструп не знает плюсы
Миниатюры
Почему программа не обрабатывает исключение и при этом добавляет элемент вектору?  
0
0 / 0 / 0
Регистрация: 05.07.2018
Сообщений: 14
17.08.2021, 16:04  [ТС] 10
То есть есть вероятность того, что и дальше будет встречаться код, который не будет работать у меня? Что делать в этом случае? Продолжать учиться по книге или перейти на другой источник знаний?
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
17.08.2021, 16:08 11
Цитата Сообщение от Fransy Посмотреть сообщение
vector генерирует исключения или нет?
Да. Метод at в частности.
https://en.cppreference.com/w/... /vector/at
If pos is not within the range of the container, an exception of type std::out_of_range is thrown.
1
Неэпический
18109 / 10696 / 2062
Регистрация: 27.09.2012
Сообщений: 26,933
Записей в блоге: 1
17.08.2021, 16:09 12
Цитата Сообщение от Fransy Посмотреть сообщение
который не будет работать у меня?
А там точно такой код?
А то может всё-таки там включается файл std_lib_facilities.h, а не bits/stdc++.h ?
2
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
17.08.2021, 16:14 13
Цитата Сообщение от Fransy Посмотреть сообщение
То есть есть вероятность того, что и дальше будет встречаться код, который не будет работать у меня? Что делать в этом случае? Продолжать учиться по книге или перейти на другой источник знаний?
Пользоваться теми библиотеками, которые идут в приложении к книге и описываются в книге, а не теми которые стандартные (и которых в книге нет, а возможно просто не было на момент написания книги).
0
Неэпический
18109 / 10696 / 2062
Регистрация: 27.09.2012
Сообщений: 26,933
Записей в блоге: 1
17.08.2021, 16:30 14
Лучший ответ Сообщение было отмечено Fransy как решение

Решение

Собственно,
Почему программа не обрабатывает исключение и при этом добавляет элемент вектору?
3
0 / 0 / 0
Регистрация: 05.07.2018
Сообщений: 14
18.08.2021, 18:50  [ТС] 15
Читал первое издание книги, в ней нет данного примечания, спасибо за данный ответ, перешел на 2ое издание книги, тема закрыта
0
18.08.2021, 18:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.08.2021, 18:50
Помогаю со студенческими работами здесь

Программа обрабатывает только один минимальный элемент, а не все. Где ошибка?
В теории, программа должна суммировать все отрицательные числа, но сумма подсчета &quot;на пальцах&quot;...

почему то первый в этом коде у меня не нулевой элемент а идет по порядку все
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;conio.h&quot; #include &quot;locale.h&quot; #define...

Почему при при этом коде инициализация не получается нормальной
Есть код Private Sub UserForm_Activate() Dim СписокЗаказВокне() Dim i As Long ...

Почему при сохранении двоичного файла функция fwrite добавляет к символу 0x0A еще 0xOD?
в файле присутсвует символ 0x0A, при сохранении двоичного файла функция fwrite добавляет к этому...

Почему исключение при отладке обрабатывается, а при установке приложения на пк нет
При отладке приложение исключение обрабатывается нормально, а после установки на пк нет? try ...

При обращении к структуре из класса возникает исключение:нарушение прав доступа при записи. Почему?
Структура Test описана в классе ABC: class ABC{ struct Test { int get_i() { return i; }...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru