Консультация № 48447
07.07.2006, 11:53
0.00 руб.
0 2 1
Уважаемые эксперты у меня к вам такой вопрос точнее два. Создано Windows-приложение на MVC++, в котором используется открытие БД, посредством CDatabase. В случае недоступности БД по сети выдается стандарное окно о ненормальном прекращении работы программы с кнопками: прекратить, продолжить, отладка. Вопрос как сделать, чтобы окно не выходило и приложение "слетало". И еще я привожу фрагмент кода, здесь использую обработку исключения CDBException, при использовании CDatabase->OpenEx, однако исключение не обрабатывается а выскакивает вышеупомянутое окно. Как быть. Буду признателен за ответ.

Приложение:
CDatabase*pDatabase;BOOL d_status;try{pDatabase=new CDatabase();d_status=pDatabase->OpenEx(_T"DSN=ALPHA2004;UID=ALPHA2004;PWD=alpha2005"),CDatabase::openReadOnly|CDatabase::noOdbcDialog);}catch(CDBException &cdbexcept){exception.GetErrorMessage(szCause,255,NULL);AfxMessageBox(szCause,MB_OK, 0);i_status=0;}

Обсуждение

Неизвестный
07.07.2006, 23:56
общий
это ответ
Здравствуйте, Воробьев Дмитрий Владимирович!
Попробуйте такой обработчик исключения
try{
pDatabase=new CDatabase();
d_status=pDatabase->OpenEx(_T"DSN=ALPHA2004;UID=ALPHA2004;PWD=alpha2005"),
CDatabase::openReadOnly|
CDatabase::noOdbcDialog);
}
catch(CDBException* ex)
{
ex->GetErrorMessage(szCause,255,NULL);
AfxMessageBox(szCause,MB_OK, 0);
i_status=0;
delete ex;
}
и всё получится так как Вы хотели.

Удачи!
Неизвестный
08.07.2006, 11:55
общий
Дело в том, что в самом обработчике исключений содержится ошибка ( catch(CDBException &cdbexcept) здесь надо было либо убрать ссылку либо поставить указатель)поэтому срабатывает обработчик исключений более высокого уровня и появляется тот самый диалог о котором Вы говорили.
Форма ответа