powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Обработке кода Exception
7 сообщений из 7, страница 1 из 1
Обработке кода Exception
    #32375686
Osipovic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос ко всем, кто работает с С++ (Персонально к Ой Вэй)
Как правильно получить ( выделить) код Exception, если произошла какая-то ошибка, для последующей обработке
CDatabase dbOutput;
try
{
CString strf;
bRet = dbOutput.OpenEx( strf,CDatabase::forceOdbcDialog );
}
catch( CDBException* e )
{
#ifdef _DEBUG
afxDump << "Database could not be opened " << e->m_strError << "\n";
#endif
}
try
{
dbOutput.ExecuteSQL( "CREATE TABLE Test (Col_1 char (6) NOT NULL ,
Col_2 text NULL ,
Col_3 varchar (6) NULL ) ");
}
catch( CDBException* e )
{
#ifdef _DEBUG
afxDump<<"Tabelle could not be opened "<<e->m_nRetCode<<"+"<<e- >m_strError<<"+"<<e->m_strStateNativeOrigin<<"\n";
#endif
dlg.m_strError = e->m_strError;
e->Delete();
}
...
Рейтинг: 0 / 0
Обработке кода Exception
    #32375857
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а по конкрет+++++++++ней ...

я делаю так

try
{
...
}
catch (Exception &e)
{
...
}

правда на BC++



____
...
Рейтинг: 0 / 0
Обработке кода Exception
    #32377028
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну я уже персонально здесь :)

Так в чём вопрос? В приведенном тексте всё написано...
У CDBException есть m_nRetCode, m_strError и m_strStateNativeOrigin, запоминаем их в переменную(ые) и используем...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
BOOL lSuccess = true;
RETCODE retcode;
try
{
...
}
catch(CDBException* e)
{
    lSuccess = false;
    retcode = e->m_nRetCode;
    e->Delete();
}

if(!lSuccess)
{
....
}
...
Рейтинг: 0 / 0
Обработке кода Exception
    #32378585
Osipovic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема заключается в диагностике. Т.е. как по retcode определить причину вылета. Это может быть ошибка синтаксическая, или БД вдруг стала недоступна или ...
Т.е. должна быть где-то таблица со всеми возможными e->m_nRetCode or e->m_strStateNativeOrigin. Такой таблицы не нашел.
...
Рейтинг: 0 / 0
Обработке кода Exception
    #32379054
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это описано в MSDN в справке о полях CDBException.
Если у вас нет MSDN, то это очень плохо. Я могу найти и кинуть эти списки. Ещё бывает MSDN online (msdn.microsoft.com).
...
Рейтинг: 0 / 0
Обработке кода Exception
    #32379081
Osipovic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел. Премного благодарен.
...
Рейтинг: 0 / 0
Обработке кода Exception
    #32379586
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хмм... Судя по исходникам, у вас ошибки диагностируются только при определенном _DEBUG. А в release у вас программа будет молча игнорировать ошибки?

кроме того у вас такая схема

try {
открыли базу
} catch {
нихрена не открыли
}

try {
запрос
} catch {
проблемы с запросом
}

Не правильнее будет сделать
try {
открыли базу
выполнили запрос
} catch ( проблемы с open )
{ пожаловались }
catch ( проблемы с запросом )
{ пожаловались про запрос }


Иначе получается, что даже при ошибках с open, запрос все равно будет пытааться выполниться (заведомо неудачно).
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Обработке кода Exception
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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