Форум программистов, компьютерный форум 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
6929 / 4122 / 942
Регистрация: 30.01.2014
Сообщений: 6,915
21.03.2014, 12:15     Снова try catch
Цитата Сообщение от Тамика Посмотреть сообщение
Я не хочу в этом классе обрабатывать исключение, не хочу в этом классе делать вывод сообщения.
Ловить, чтобы вывести сообщение, потом опять бросать может быть не совсем эффективно. Этим пользоваться нужно в других, более сложных случаях. А в тут можно просто:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int_array::int_array(int n)
{
    if (n < 0)
    {
        char const * msg = "Cannot initialize array with negative count of elements!";
        std::cout << msg; 
        throw msg;
    } 
    mas = new int[n];
    for (int i = 0; i < n; ++i)
        mas[i] = 0;
    size = n;
    capacity = n;
}
А обрабатывать уже в другом месте. Если хочется постоянно иметь лог места, где выброшено исключение - можно сделать вот так:
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
inline 
void throw_mylib_exception(char const * mes, char const * func, char const * file, int line)
{
    std::cout << "exception thrown from function " << func << " at file " << file << ", line " << line << std::endl;
    throw mes;
}
 
#define THROW_MYLIB_EXCEPTION(mes) \
     throw_mylib_exception(mes, __FUNCTION__, __FILE__, __LINE__)
 
......
 
int_array::int_array(int n)
{
    if (n < 0)
    {
        THROW_MYLIB_EXCEPTION("Cannot initialize array with negative count of elements!");
    } 
    mas = new int[n];
    for (int i = 0; i < n; ++i)
        mas[i] = 0;
    size = n;
    capacity = n;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru