| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Обработка исключения |
| Автор: And234 7.12.2005, 08:59 | ||||||||
| Среда VC6 для примера консоль.
и два класса 1 для обрабоки
2 класс исключения
компилится и работает ОК но если обозначаю класс исключения в Main() как
возникает ошибка "abnormal program termination". Как я могу исправить, с условием обработки исключения этим классом. Думаю проблема в типах функций. |
| Автор: Vyacheslav 7.12.2005, 14:39 |
| Где код, в котором непосредственно генерится исключение? |
| Автор: blackofe 7.12.2005, 18:15 | ||||
| And234 а почему не так?
я немножко переделал программу. мне такой вариант нравится больше:
выдает результат: catch main! error: msgerr catch 2 Press any key to continue |
| Автор: And234 7.12.2005, 19:55 | ||
| blackofe Огромное спасибо. То что нужно. Очень волнует один вопрос.
|
| Автор: blackofe 7.12.2005, 20:02 | ||||||
strdup(perrmsg); аллокирует новую память, копирует туда строку perrmsg и помещает указатель на нее в msgerr. ясное дело, что за собой надо подчищать хотя, наверное, можно обойтись и без аллокации:
но мне этот вариант нравится меньше. не люблю, когда изнутри объекта я ссылаюсь на бог весть что. в нашем случае, когда аргументом конструктора Exeptt является константа, оно как бы нестрашно. но если передается указатель на строку, которая где-нибудь по пути удалится - это у меня вызывает не очень приятные ощущения. ;) |
| Автор: blackofe 7.12.2005, 20:27 | ||||||||
вообще я предпочитаю работать со string'ом. вот, к примеру, мой универсальный класс исключений.
когда я создаю класс, в котором могут генериться исключения, я делаю nested класс:
мне остается только имплементировать функцию Description() и я allset.
теперь я могу ловить исключения, причем избирательно. могу как A::Exception, а могу как более общий ZException:
|