powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Обработка исключений
8 сообщений из 8, страница 1 из 1
Обработка исключений
    #32402092
Фотография maloi_alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Суть в следующем:
Делаю ActiveX компонент (Visual C++ 7.0). Как и положено критические участки кода заключаю в try...catch. Однако при тестировании компонента в VBE (Excel, Access) при возникновения исключения (даже обработанного в try... cath) рушится весь процес. Даже мяу сказать не успевает...
Подскажите плз. с чем это связано.

Заранее благодарен.
...
Рейтинг: 0 / 0
Обработка исключений
    #32402187
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а секцию try...catch вашего ActiveX посмотреть можно?
...
Рейтинг: 0 / 0
Обработка исключений
    #32402232
Фотография maloi_alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
void DoOnHasChanges(IDispatch* ChangedSet, IDispatch* DeletedSet, IDispatch* NewSet)
	{
		try
		{
			FireEvent(eventidOnHasChanged, EVENT_PARAM(VTS_DISPATCH VTS_DISPATCH VTS_DISPATCH), ChangedSet, DeletedSet, NewSet);
		}
		catch(CException &e)
		{
			e.ReportError();
			e.Delete();
		}
	}


Тут я вызываю событие, куда передаю три набора данных.
Процесс валится при любой ошибке во время работы с этими рекордсетами из VisualBasic.
...
Рейтинг: 0 / 0
Обработка исключений
    #32402257
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MFC exceptions на основе CException ловятся так
Код: plaintext
1.
2.
3.
4.
catch(CException* e)
{
...
}
...
Рейтинг: 0 / 0
Обработка исключений
    #32402281
Фотография maloi_alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал. Не помогло.
Проблема в том, что исключение происходит не внутри компонента, а в Visual Basic. Только вот почему все рушится, не понятно.....
...
Рейтинг: 0 / 0
Обработка исключений
    #32402300
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вернуть S_OK не забываете? Дело в том что в COM вообще нет исключений и сервер возвращает клиенту longint как статус завершения - а вот уже различные враперы типа MFC и runtime библиотеки типа VB уже выбрасываю клиентское исключение, поэтому например если вы не вернете из com-метода S_OK - клиент сгенерит соответствующее исключение

Попробуйте убрать report_error() и delete()

Попробуйте вместо try..catch использовать MFC-макросы - расскажите о результатах

Да и еще - а что за exception появляется в VB?
...
Рейтинг: 0 / 0
Обработка исключений
    #32402343
Фотография maloi_alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибки в VB коде я создаю специально, рассчитывая на то заказчик неизбежно будет их допускать при использовании компонента.

Забыл добавить. Событие я вызываю из отдельного потока, может это как-нибудь с этим связано ?
...
Рейтинг: 0 / 0
Обработка исключений
    #32402370
Фотография maloi_alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все, вроде нашел в чем трабл....
Как раз из-за того что событие вызывается из потока весь процесс и рушится.
Большое спасибо за участие.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Обработка исключений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]