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

Снова try catch - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Задание из Страуструпа http://www.cyberforum.ru/cpp-beginners/thread1125705.html
Добрый день. При изучении С++ по учебники Страуструпа столкнулся со следующим заданием : "Дайте пользователю возможность определять функции в настольном калькуляторе. Подсказка: определяйте функции как последовательность действий, прямо так, как их набрал пользователь. Такую последовательность можно хранить или как символьную строку, или как список лексем. После этого, когда функция вызывается,...
C++ Файлы и записи c++ Составить программу, выводящую на экран анкетные данные учеников (Ф. И. О., год рождения, адрес, сведения о родителях). Распечатать данные об учениках, родившихся ранее заданного года. мы вводим в программе данные через структуру записываем их в новый файл а потом открываем этот файл еще раз и задам условие и исхдя из условия выводим учеников на экран http://www.cyberforum.ru/cpp-beginners/thread1125688.html
Количество отрицательных и количество положительных элементов C++
количество отрицательных и количество положительных элементов
Стек с контролем на переполнение C++
#include <iostream.h> struct stek { int d; struct stek *next; }; void push(stek* &next, int d)
C++ Все числа с диапазоном от А до В,что заканчиваются на любую парную цифру http://www.cyberforum.ru/cpp-beginners/thread1125676.html
Здравствуйте. Помогите решить задачу тремя способами используя операторы цикла while, do while i for. Вывести на экран: Все числа с диапазоном от А до В,что заканчиваются на любую парную цифру. Очень надо,заранее спасибо!
C++ Шифрование файла с методом исключающего ИЛИ Здраствуйте, помогите составить программу которая шифрует файл текстового документа по символьно, с использованием ключа подробнее

Показать сообщение отдельно
DrOffset
6424 / 3798 / 879
Регистрация: 30.01.2014
Сообщений: 6,591
21.03.2014, 12:41     Снова try catch
При таком варианте try-catch в функции вообще не нужны:
Цитата Сообщение от Тамика Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void int_array::erase(int index)
{
    //try
    //{
        if (index < 0) 
            throw std::invalid_argument("Bad index to erase!");
        if (index > size) 
            throw std::invalid_argument("Index out of range!");
        int *temp = new int[size-1];
        for (int i = 0; i < index; ++ i)
            temp[i] = mas[i];
        for (int i = index + 1; i < size; ++i)
            temp[i - 1] = mas[i];
        size = size - 1;
        int *t = mas;
        mas = temp;
        delete [] t;
    //}
    //catch(const std::invalid_argument& ex)
    //{
    //    throw;
    //}
}
Цитата Сообщение от Тамика Посмотреть сообщение
Почему так нельзя?..(
В switch можно только интегральные типы сравнивать с интегральными константами.

Правильный способ либо завести по типу исключения на каждый тип ошибки,
C++
1
2
3
4
5
6
7
8
9
10
11
12
try
{
 ....
}
catch(bad_index const &)
{
...
}
catch(out_of_range const &)
{
...
}
либо (что чуть хуже) передавать помимо строки еще и тип ошибки в виде константы (например из enum). Тестить саму строку с исключением как-то не очень.
 
Текущее время: 14:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru