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

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

Войти
Регистрация
Восстановить пароль
 
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
#1

Не ловятся исключения - C++

28.08.2012, 19:16. Просмотров 427. Ответов 7
Метки нет (Все метки)

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
A *ob;
    try{
        ob = new A[3];
    }catch(bad_alloc xa){
      cout << "err.\n";
      return 1;
    }
 
    try{
        delete  ob;
    }catch(...){
      cout << "err.\n";
      
    }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2012, 19:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не ловятся исключения (C++):

Исключения - C++
читаю про исключения, сама концепция понятна, но стоит ли вообще заострять на исключениях своё внимание? например описан класс exception,...

исключения c++ - C++
Здраствуйте! Я тут приспособил код старого проекта чтобы побаловаться с исключениями. Перечитывал я тут недавно главу 14.6 из Страуструпа...

Исключения - C++
Помогите пожалуйста!!! Написал два исключения, но выводит что-то неправильно. Помогите найти ошибки!!! Задание: для функции:...

Исключения - C++
У Эккеля, во втором томе, в главе про исключения, встретил конструкцию такого вида: T&amp; operator(int i) throw(RangeError) { if(i...

Исключения - C++
Помогите реализовать класс исключения в данном коде. Задание: Реализуемая функция должна генерировать подходящие исключения. Обработку...

Исключения - C++
Никак не могу понять, как работают исключения в С++. Может быть кто-нибудь сможет объяснить на примере деления на 0. Исключения должны быть...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
easybudda
Модератор
Эксперт CЭксперт С++
9622 / 5570 / 946
Регистрация: 25.07.2009
Сообщений: 10,695
28.08.2012, 19:23 #2
bgm313, а что ловиться-то должно? delete A вместо delete [] A? Это не поймается, просто утечка памяти будет...
1
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
28.08.2012, 20:36 #3
delete не кидает исключений
2
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
28.08.2012, 21:24  [ТС] #4
Тем не менее у меня выскакивает ошибка?
0
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
28.08.2012, 21:28 #5
Тем не менее у меня выскакивает ошибка?
это вопрос или утвреждение? если вопрос - то вам там виднее. если утверждение и вам не понятно почему нет исключения, то его и не должно быть.
если деструкторы объектов не кидают исключений, то их нет. соответственно, ловится нечему.
при вызове new[] и последующем вызове delete вместо delete[] исключения не кидаются.
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
29.08.2012, 14:49 #6
При вызове delete на new[] или delete[] на new программа уходит в UB. Может быть дамп памяти, может быть ничего, может быть взрыв компьютера, одним словом - поведение программы не определено.
0
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
29.08.2012, 15:10 #7
Напомню, что для своих собственных классов можно перегрузить как обычные версии, так и []-версии, так что в принципе встроить защиту от дурака реально.
0
easybudda
Модератор
Эксперт CЭксперт С++
9622 / 5570 / 946
Регистрация: 25.07.2009
Сообщений: 10,695
29.08.2012, 15:27 #8
Цитата Сообщение от bgm313 Посмотреть сообщение
Тем не менее у меня выскакивает ошибка
Ошибку студия выдаёт по тому, что она типа умная и сама такие вещи отслеживает. А так ForEveR правильно говорит. gcc не ругается
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
int main() {
    int * arr = new int [10];
    try {
        delete arr;
    }
    catch (...) {
        std::cerr << "Hitler kaput!" << std::endl;
    }
    
    std::cout << "Bye!" << std::endl;
    
    return 0;
}
Код
[andrew@andrew shitcode]$ g++ -Wall -o new10 new10.cpp 
[andrew@andrew shitcode]$ ./new10
Bye!
[andrew@andrew shitcode]$
студия вон ошибки выдаёт, а какой-нибудь борланд-трубоси может и
Цитата Сообщение от ForEveR Посмотреть сообщение
взрыв компьютера
устроить...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2012, 15:27
Привет! Вот еще темы с ответами:

Исключения - C++
Надо сделать исключение в программе. У меня есть список. Есть методы добавить в конец списка, в начало списка, удалить елемент который...

исключения - C++
Помогите пожалуйста создать мнoгoурoвнeвую иeрaрхию нaслeдoвaния клaссoв исключeния для сoздaния ситуaции, в кoтoрoй вaжнa...

Исключения С++ - C++
С++. Перечитал уже много учебников, видел много примеров, но никак не пойму как пользоваться блоками try catch.. Может хоть кто-нибудь...

исключения - C++
пожалуйста, gомогите решить задачу на с++ , кoтoрая пoкaзывaет, чтo функция co cвoим блoкoм try не дoлжна пeрeхватывaть кaждую вoзмoжную...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.08.2012, 15:27
Ответ Создать тему
Опции темы

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