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

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

Восстановить пароль Регистрация
 
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
28.08.2012, 19:16     Не ловятся исключения #1
Почему при освобождение памяти не ловятся исключения?

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";
      
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2012, 19:16     Не ловятся исключения
Посмотрите здесь:

Исключения C++
исключения c++ C++
Исключения C++
C++ Исключения
C++ Исключения
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
28.08.2012, 19:23     Не ловятся исключения #2
bgm313, а что ловиться-то должно? delete A вместо delete [] A? Это не поймается, просто утечка памяти будет...
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
28.08.2012, 20:36     Не ловятся исключения #3
delete не кидает исключений
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
28.08.2012, 21:24  [ТС]     Не ловятся исключения #4
Тем не менее у меня выскакивает ошибка?
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
28.08.2012, 21:28     Не ловятся исключения #5
Тем не менее у меня выскакивает ошибка?
это вопрос или утвреждение? если вопрос - то вам там виднее. если утверждение и вам не понятно почему нет исключения, то его и не должно быть.
если деструкторы объектов не кидают исключений, то их нет. соответственно, ловится нечему.
при вызове new[] и последующем вызове delete вместо delete[] исключения не кидаются.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
29.08.2012, 14:49     Не ловятся исключения #6
При вызове delete на new[] или delete[] на new программа уходит в UB. Может быть дамп памяти, может быть ничего, может быть взрыв компьютера, одним словом - поведение программы не определено.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
29.08.2012, 15:10     Не ловятся исключения #7
Напомню, что для своих собственных классов можно перегрузить как обычные версии, так и []-версии, так что в принципе встроить защиту от дурака реально.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2012, 15:27     Не ловятся исключения
Еще ссылки по теме:

C++ Исключения
C++ Исключения
C++ Исключения

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
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 Посмотреть сообщение
взрыв компьютера
устроить...
Yandex
Объявления
29.08.2012, 15:27     Не ловятся исключения
Ответ Создать тему
Опции темы

Текущее время: 16:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru