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

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

Войти
Регистрация
Восстановить пароль
 
mat_for_c
139 / 134 / 29
Регистрация: 26.04.2013
Сообщений: 647
Завершенные тесты: 2
#1

try . catch - C++

27.09.2013, 20:46. Просмотров 613. Ответов 11
Метки нет (Все метки)

можно ли провести данную операцию для функции erase у вектора??? пытался, что-то не получилось:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <vector>
#include <algorithm>
#include <exception>
#include<iostream>
 
using namespace std;
 
void main() {
    vector<int> qw;
    qw.push_back(3);
    try{
        qw.erase(find(qw.begin(),qw.end(), 4)); // это соответствует qw.erase(qw.end());
    }
    catch(exception& exc)
    {
        cout << "exception";
    }
 
    system("pause");
}
все равно вылетает...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2013, 20:46     try . catch
Посмотрите здесь:

Try-catch - C++
Добрый вечер, #include &lt;iostream&gt; using namespace std; void F1(int); void F2(int, int); void F3(int, int, int);

try-catch - C++
Доброго времени суток, начал изучать исключения, и вот есть такой код: // new.cpp : Defines the entry point for the console...

Try catch - C++
try { throw pDoc-&gt;C; } catch (City) { return; } есть динамический City* C, ему присвается значение другого такого...

Try и catch - C++
Пытался сделать простую структуру,чтобы в блоке try задавалось значение переменной x, и если это значение равно,например, 5,то блок catch...

TRY/CATCH - C++
Здравствуйте! У меня есть: MASS; для простоты пояснения, x=rand();y=rand(),znacheniye=rand(); Как игнорировать ошибки...

try-catch - C++
Читаю книгу Страуструпа. Он пишет (стр 232), что можно не передавать обработчику исключений какое либо значение. #include...

try catch - C++
Здравствуйте. В c++ новичёк, с try catch никогда толком не работал, а тут пришлось. Нужно сделать защиту от ввода всего кроме цифр. вот...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.09.2013, 21:11     try . catch #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <vector>
#include <algorithm>
#include <exception>
#include<iostream>
 
using namespace std;
 
int main() 
{
    vector<int> qw;
    qw.push_back(3);
    try
    {
        vector<int>::iterator it = find(qw.begin(), qw.end(), 4);
        if (it != qw.end())
        {
            qw.erase(it);
        }
        else throw out_of_range("");
    }
    catch(const out_of_range &exc)
    {
        cerr << "exception" << endl;
    }
 
    system("pause");
    return 0;
}
mat_for_c
139 / 134 / 29
Регистрация: 26.04.2013
Сообщений: 647
Завершенные тесты: 2
27.09.2013, 21:16  [ТС]     try . catch #3
о как! спасибо большое

Добавлено через 1 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
3
4
5
if (it != qw.end())
{
   qw.erase(it);
}
else throw out_of_range("");
а тогда по сути можно и try не писать???
monolit
185 / 184 / 22
Регистрация: 24.03.2011
Сообщений: 667
Завершенные тесты: 1
27.09.2013, 21:19     try . catch #4
попробуй catch(...), все отлавливает...
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.09.2013, 21:19     try . catch #5
Цитата Сообщение от mat_for_c Посмотреть сообщение
а тогда по сути можно и try не писать???
Тогда это уже не обработка исключений будет.
mat_for_c
139 / 134 / 29
Регистрация: 26.04.2013
Сообщений: 647
Завершенные тесты: 2
27.09.2013, 21:24  [ТС]     try . catch #6
Цитата Сообщение от monolit Посмотреть сообщение
catch(...)
пробовал... как-то не захотел ловить

Добавлено через 2 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение
Тогда это уже не обработка исключений будет.
просто в else написать вывод excption и все. результат будет одинаков... разве нет?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.09.2013, 21:26     try . catch #7
Цитата Сообщение от mat_for_c Посмотреть сообщение
пробовал... как-то не захотел ловить
Чтобы ловил, нужно вбрасывать, а где у вас был вброс (throw)?

Добавлено через 1 минуту
Цитата Сообщение от mat_for_c Посмотреть сообщение
просто в else написать вывод excption и все. результат будет одинаков... разве нет?
Цитата Сообщение от alsav22 Посмотреть сообщение
Тогда это уже не обработка исключений будет.
Обработка исключений - особый механизм. Почитайте что-нибудь на эту тему.
mat_for_c
139 / 134 / 29
Регистрация: 26.04.2013
Сообщений: 647
Завершенные тесты: 2
27.09.2013, 21:28  [ТС]     try . catch #8
Цитата Сообщение от alsav22 Посмотреть сообщение
где у вас был вброс (throw)?
я его тоже пробовал... писал перед qw.erase(...); эффекта 0
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
27.09.2013, 21:40     try . catch #9
mat_for_c, зачем городить исключения, если можно писать без исключений?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.09.2013, 21:45     try . catch #10
Цитата Сообщение от mat_for_c Посмотреть сообщение
я его тоже пробовал... писал перед qw.erase(...)
Писать мало, нужно же при определённом условии вбрасывать.
mat_for_c
139 / 134 / 29
Регистрация: 26.04.2013
Сообщений: 647
Завершенные тесты: 2
27.09.2013, 21:50  [ТС]     try . catch #11
Цитата Сообщение от Tulosba Посмотреть сообщение
если можно писать без исключений
на самом деле... зачем?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2013, 22:03     try . catch
Еще ссылки по теме:

try-catch - C++
Какой тип проекта создавать в Visual Studio чтобы можно было сделать обработку исключений с try-catch? Или что сделать в Code Blocks с той...

DeleteFile и try.catch - C++
Удаляю файл через DeleteFile.Могут быть 2 ошибки:не существует и открыт. Как прикрутить сюда try - catch именно при ошибке удаления,если...

Catch(.) не срабатывает - C++
Имеется такой фрагмент код: HANDLE hData = GetClipboardData(CF_TEXT | CF_LOCALE); char* chBuffer = (char*)GlobalLock(hData); try...

Исключения try-catch - C++
Здравствуйте, пытаюсь с помощь try-catch сделать обработку исключений. #include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;cstdlib&gt; ...

Конструкция try . catch - C++
Здравствуйте. Подскажите, как продолжить работу программи после обнаружения ошибки конструкцией try ... catch. #include...


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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
27.09.2013, 22:03     try . catch #12
Цитата Сообщение от mat_for_c Посмотреть сообщение
на самом деле... зачем?
Судя по Вашему коду из сообщения #1, понимания что такое исключения и с чем их едят - нет.
Попытка удалить элемент из вектора через итератор на конец вектора не бросает исключение, а приводит к undefined behavior. Поэтому и что-либо перехватить не получится, так как никакого исключения не было. Ситуации, подобные Вашей нужно обрабатывать иначе. В данном случае проверить возврат std::find, и если он вернул v.end(), то элемент не найден, и удалять ничего не надо. Решается всё обычным if'ом.
Yandex
Объявления
27.09.2013, 22:03     try . catch
Ответ Создать тему
Опции темы

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