Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/2: Рейтинг темы: голосов - 2, средняя оценка - 4.50
178 / 126 / 25
Регистрация: 12.01.2012
Сообщений: 624
1

Как свиртуализировать исключения?

31.07.2012, 19:02. Просмотров 497. Ответов 2
Метки нет (Все метки)

Мне очень нравится как реализован перехват исключений в Python и Java: там в блоке catch не надо перечислять все виды исключений, а достаточно типы exception предков. Можно ли так же делать в C++? Типа такого:
C++
1
2
3
4
5
try{
   ...
} catch ( std::exception &e ){
   std::err << e.what() << std::endl;
}
При этом, чтобы в зависимости от типа исключения возвращался разный текст из e.what()
Мне самое главное не то, чтобы перехватывались абсолютно все виды исключений, а чтобы возвращался нужный текст при вызове e.what()
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.07.2012, 19:02
Ответы с готовыми решениями:

Организация собственного исключения и передача в него исходного исключения
Для обработки исключений при работе с БД я создал собственное исключение: public class...

Как избавиться от исключения?
Добрый вечер. У меня есть форма. Она работает корректно Так же в форме есть обработчик события...

Как создать исключения?
Есть форма в проекте на c#, где нужно вводить имя, фамилию, и адрес. Нужно создать исключения....

Как обрабатывать исключения
Как сделать обработку исключения i -только натуральные (целые) числа?

2
~ Эврика! ~
1253 / 1002 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
31.07.2012, 19:08 2
В std::exception функция const char* what() const уже виртуальная. Наследуйте свои исключения от std::exception и будет вам счастье же.
1
178 / 126 / 25
Регистрация: 12.01.2012
Сообщений: 624
31.07.2012, 19:19  [ТС] 3
Спасибо. Странно, ведь раньше не работало-то! Вот я дурак, писал для каждого catch свой обработчик и вставлял туда операторы копипастом.
Пример
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
#include <stdexcept>
#include <iostream>
 
using namespace std;
 
class MyException : public exception
{
      virtual char const * what() const throw()
      {
         return "MyException";
      }
};
 
int main()
{
   try
   {
      throw MyException();
   }
   catch ( exception &e )
   {
      cout << e.what() << endl;
   }
 
   return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.07.2012, 19:19

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как обрабатывать исключения?
Откомпилировал норм, но вот когда ввожу данные говорит &quot;Прекращена работа программы&quot; И не понятно...

Как отлавливать исключения?
Вы пишете код для простой арифметического библиотеки. Вы решили создать метод с именем Devide,...

Как генерировать исключения?
Как сгенерировать исключение. Как выход индекса за пределы допустимого диапозона. Изучаю API

как добавить исключения в Outpost
Вообщем создал я чат но чтобы выходить в сеть мне нужно отключать Outpost каждый раз так делать...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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