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

Делаю Memory Manager Array с простым (int) exception последний элемент чудит - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ "Плейсхолдер" (placeholder) http://www.cyberforum.ru/cpp-beginners/thread630846.html
"Плейсхолдер" (переводится как прототип или заполнитель ?) - так говорят многие участники на этом форуме, объясните пожалуйста, что это такое ?? поисковик выдал мне много всего от хабра с html5 до...
C++ Рисование ASCII кодами и русский текст в консоли Всем добрый вечер. И вот такой вопрос есть. Сначала печатаю в консоли текст а под ним горизонтальную линию. Только вместо линии получаются каракули. Уже по разному пробовал, шрифты менял и ничего не... http://www.cyberforum.ru/cpp-beginners/thread630821.html
C++ Составить программу для вычисления количества цифр среди элементов списка.
Тема: Динамические структуры данных. Линейные списки. Дан список А, состоящий из записей: первое поле – символ, второе – адрес следующего элемента. Составить программу для вычисления количества цифр...
C++ Запуск программ на других компах
Всем привет, вообщем перерыл весь интернет, как запускать скомпилированную программу на разных компьютерах, пробывал ставить и статич библиотеки и dll и mt\ и тд вылетали разн ошибки, вообщем...
C++ Цельсий в Фaренгейт и Реoмюр http://www.cyberforum.ru/cpp-beginners/thread630771.html
========== Для тeмпературы от -5 до +5 °C с шaгом 1.25 °C вывeсти соoтвeтствующие знaчения по Фaренгейту и Реoмюру. oформить вывoд в видe крaсивpй тaблицы. Дробные числа округлить до 2 знаков...
C++ Define внутри макроса Подкажите возможно ли написать макрос кот. создаст #define? например: #define MACRO(name) #define NAME name знаю, что напрямую так не напишешь т.к. второй define будет взят в кавычки, но может... подробнее

Показать сообщение отдельно
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
30.07.2012, 22:43
Вот тут я не уверен в семантике кода и ассоциативности оператора <<, стандарты читать лень. Попробуйте переписать строки 36–41 следующим образом, разбив на несколько операторов. Должно вылетать тогда только на последнем.
C++
1
2
3
4
5
std::cout << MemoryManagerArray->GetElement(0)  << "\n";
std::cout << MemoryManagerArray->GetElement(1)  << "\n";
std::cout << MemoryManagerArray->GetElement(2)  << "\n";
std::cout << MemoryManagerArray->GetElement(3)  << "\n";
std::cout << MemoryManagerArray->GetElement(27) << "\n";
Но в любом случае лучше пользоваться правильной идиомой обработки ошибок с помощью исключений:
C++
1
2
3
4
5
6
7
// оборачивать в try-catch *каждый* кусок, где может произойти ошибка
try {
  /* код, в котором может произойти ошибка */
}
catch (/* значение */) {
  /* обработка ошибки */
}
а не
C++
1
2
3
4
5
6
7
8
9
10
11
int main()
{
  // весь код завёрнут в один try-catch-блок
  try {
    /* кот */
  }
  catch (/* значение */) {
    /* обработка */
  }
  return 0;
}
Это работает, но ведь это ловит только одну, первую ошибку. Дальше программа завершается.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru