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

Ограничения исключительных ситуаций f(.)throw(.){} - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Alberto_Timakov
1 / 1 / 0
Регистрация: 21.11.2011
Сообщений: 183
07.08.2012, 13:09     Ограничения исключительных ситуаций f(.)throw(.){} #1
Пробовал скомпилировать пример из Г. Шилдта [1]:

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
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
using namespace std;
 
//Ограничения типов исключительных ситуаций, генерируемых функцией.
 
void Xhandler(int test)throw(char,double)
{
     if(test == 0) throw test;
     if(test == 1) throw 'a';
     if(test == 2) throw 123.23;
}
 
int main()
{
     cout << "Начало\n"
 
try
{
     Xhandler(0);
}
catch(int i)
{
     cout << "int" << endl;
}
catch(char)
{
     cout << "char\n";
}
catch(double)
{
     cout << "double\n";
}
cout << "Конец!";
return 0;
}
"Которая при попытке сгенерировать исключительную ситуацию типа не входящего в список throw, должна была завершиться аварийно"*[1]. Но она не завершается, а нормально работает...причем даже если поставить пустой параметр throw() при котором "функция Xhandler не может генерировать никаких исключительных ситуаций."[1]. Она все равно генерирует все, т.е. работает исправно...Что я не так понял???? Что я не так делаю? Вообще она работает?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2012, 13:09     Ограничения исключительных ситуаций f(.)throw(.){}
Посмотрите здесь:

C++ Обработка исключительных ситуаций
Обработка исключительных ситуаций. C++
Обработки исключительных ситуаций C++
C++ Обработка исключительных ситуаций
Обработка исключительных ситуаций C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2012, 15:42     Ограничения исключительных ситуаций f(.)throw(.){}
Еще ссылки по теме:

C++ Придумать 10 задач на обработку исключительных ситуаций
C++ Обработка исключительных ситуаций!
Обработка исключительных ситуаций C++

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

Или воспользуйтесь поиском по форуму:
Alberto_Timakov
1 / 1 / 0
Регистрация: 21.11.2011
Сообщений: 183
07.08.2012, 15:42  [ТС]     Ограничения исключительных ситуаций f(.)throw(.){} #21
Цитата Сообщение от Avazart Посмотреть сообщение
Режим компиляции отладочный или итоговый подразумевается
Я поставил Release "обозреватель решений->по проекту правой кнопкой->свойства->конфигурация = Release (было Debug)", нажал выполнить, выполнилось точно также как при конфигруации = Debug, т.е. сообщение "Новый обработчик terminate()" не вышло, а появилось сообщение "Необработанное исключение в "0x7c812aeb" в "Monstrr.exe": Исключение Microsoft C++: int по адресу 0x0012fea0..", но создалась папка Release. При запуске exe из Release и Debug есть небольшое различие в сообщение об ошибке. Но оба печатают мой текст "Новый обработчик terminate()". Или там еще где-то в настройках что-то изменить надо, чтобы при Release при выполнении из MVS выскакивала консолька с моим сообщением "Новый обработчик terminate()"?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Yandex
Объявления
07.08.2012, 15:42     Ограничения исключительных ситуаций f(.)throw(.){}
Ответ Создать тему
Опции темы

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