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

собственный неожиданны обработчик - C++

Восстановить пароль Регистрация
 
xxx||yyy
0 / 0 / 0
Регистрация: 12.04.2012
Сообщений: 3
12.04.2012, 15:22     собственный неожиданны обработчик #1
возникла проблема с обработкой исключений. В теории все понятно, а на практике получается бред. Не работают даже примеры, найденный на просторах инета

что здесь может быть не так?

C++
1
2
3
4
5
6
7
8
9
10
11
void Error()
{
 cout << "Error !!!!! " << endl;
}
 
void main()
{
 set_terminate(Error);
 throw "df";
 cout << "Cancel" << endl;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2012, 15:22     собственный неожиданны обработчик
Посмотрите здесь:

C++ Собственный класс-итератор
Собственный формат файла C++
Собственный класс итератора C++
Собственный манипулятор C++
STL и собственный класс C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MegaMozg
 Аватар для MegaMozg
44 / 44 / 1
Регистрация: 19.12.2008
Сообщений: 110
12.04.2012, 15:30     собственный неожиданны обработчик #2
исключения обрабатываются в блоке:
C++
1
2
3
4
5
6
7
8
try
{
   ...
}
catch()
{
   ...
}
теория и прмер
xxx||yyy
0 / 0 / 0
Регистрация: 12.04.2012
Сообщений: 3
12.04.2012, 15:37  [ТС]     собственный неожиданны обработчик #3
[QUOTE=MegaMozg;2903572]исключения обрабатываются в блоке:
C++
1
2
3
4
5
6
7
8
try
{
   ...
}
catch()
{
   ...
}
имелась в виду замена функции terminate() собственной функцией-обработчиком (для тех исключений, для которых обработчики не сгенерированы)
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
12.04.2012, 15:41     собственный неожиданны обработчик #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <stdexcept>
 
void on_terminate()
{
   std::cout << "Terminate called" << std::endl;
}
 
int main()
{
   std::set_terminate(on_terminate);
   throw 1;
}
forever@pterois:~/My_pro1/cpp_pro$ g++ -o new new.cpp
forever@pterois:~/My_pro1/cpp_pro$ ./new
Terminate called
Аварийный останов
std::abort() / std::terminate как видно вызывается в любом случае, после вызова нашей функции.
Yandex
Объявления
12.04.2012, 15:41     собственный неожиданны обработчик
Ответ Создать тему
Опции темы

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