powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / C++ Builder XE5. TADOConnection. try catch. Не работает.
16 сообщений из 16, страница 1 из 1
C++ Builder XE5. TADOConnection. try catch. Не работает.
    #39577493
andrandrk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, коллеги!

Пишу dll на Embarcadero C++ Builder XE5.
Для соединения с БД на MS SQL Server использую компонент TADOConnection.
//======
try {SQLConnection->Connected = true;}
catch(...)
{
// обработка исключения
};
//======
Всё работает замечательно до тех пор, пока сервер не оказывается недоступен по той или иной причине.
Дело в том, что обычный способ отлова исключений (try catch) не срабатывает, если запускать приложение не из под IDE, и программа аварийно завершает работу.
Есть подозрение, что это, вообще, баг XE5.
Если кто-то сталкивался с этой или подобной проблемой и решил её, прошу подсказать.
...
Рейтинг: 0 / 0
C++ Builder XE5. TADOConnection. try catch. Не работает.
    #39577703
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrandrk,

а чем отличается try от __try помните?
...
Рейтинг: 0 / 0
C++ Builder XE5. TADOConnection. try catch. Не работает.
    #39577731
andrandrk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Навскидку. __try используется с __except и __finally. Это не c++ конструкция, на сколько я понимаю, а надстройка среды.
__try __except тоже, кстати, пробовал для отлова этого исключения. Эффект тот же.
...
Рейтинг: 0 / 0
C++ Builder XE5. TADOConnection. try catch. Не работает.
    #39577769
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrandrkНавскидку. __try используется с __except и __finally. Это не c++ конструкция, на сколько я понимаю, а надстройка среды.
__try __except тоже, кстати, пробовал для отлова этого исключения. Эффект тот же.
а какая ОСь? на Win XP были с какими-то исключениями похожие проблемы

попробуйте сами сгенерить исключения, поймает например?:
языковое исключение

деление на ноль
...
Рейтинг: 0 / 0
C++ Builder XE5. TADOConnection. try catch. Не работает.
    #39577777
andrandrk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автора какая ОСь?
Windows 7.

try {1/0;}
catch(...)
{
// обработка исключения
};

Отлавливается замечательно.
...
Рейтинг: 0 / 0
C++ Builder XE5. TADOConnection. try catch. Не работает.
    #39577850
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrandrkПишу dll на Embarcadero C++ Builder XE5.
try {}
catch(...)
{
// обработка исключения
};
//======
Всё работает замечательно до тех пор, пока сервер не оказывается недоступен по той или иной причине.
Дело в том, что обычный способ отлова исключений (try catch) не срабатывает, если запускать приложение не из под IDE, и программа аварийно завершает работу.
Есть подозрение, что это, вообще, баг XE5.
Если кто-то сталкивался с этой или подобной проблемой и решил её, прошу подсказать.

Речь о 32 битном или 64 битном варианте?
...
Рейтинг: 0 / 0
C++ Builder XE5. TADOConnection. try catch. Не работает.
    #39577927
andrandrk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторРечь о 32 битном или 64 битном варианте?

64
...
Рейтинг: 0 / 0
C++ Builder XE5. TADOConnection. try catch. Не работает.
    #39577956
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrandrk,
в документации пример такой
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 try
    {
        ADOConn->Connected = true;
    }
    catch (EADOError *e)
    {
        MessageDlg("Error while connecting", mtError,
                      TMsgDlgButtons() << mbOK, 0);
        return;
    }
...
Рейтинг: 0 / 0
C++ Builder XE5. TADOConnection. try catch. Не работает.
    #39578056
andrandrk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
d7i,

Документация читана. Собсна по ней и написан мой код (см. вопрос топика) - от вашего примера отличается только указанием класса исключения. Так тоже не работает. Пробовал.
...
Рейтинг: 0 / 0
C++ Builder XE5. TADOConnection. try catch. Не работает.
    #39578057
andrandrk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл добавить. Экземпляр TADOConnection создаю динамически. То есть нет формы, нет компонента на форме.

// В заголовочном файле:
class TMyClass {

//...

private:
TADOConnection* SQLConnection;
};

//...

// В конструкторе TMyClass:
//...
try {SQLConnection = new TADOConnection(0);}
catch(...)
{
// обработка
};

//...

try {SQLConnection->Connected = true;}
catch(...)
{
// обработка (исключение не ловится, вопрос топика)
};
//...
...
Рейтинг: 0 / 0
C++ Builder XE5. TADOConnection. try catch. Не работает.
    #39578058
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrandrk,

на 7-ке вроде всё норм было
случайно, не в потоке делаете это?
...
Рейтинг: 0 / 0
C++ Builder XE5. TADOConnection. try catch. Не работает.
    #39578230
andrandrk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kealon(Ruslan),

авторслучайно, не в потоке делаете это?
1. Почти уверен, что в основном (и единственном) потоке всё происходит. Скажем так, в DLL дополнительных потоков не создаю, а вызывающее приложение не моего авторства, но там, скорее всего, тоже дополнительных потоков нет. А если не в основном потоке меня вызывают, что это меняет?
2. При сборке на MS VC обсуждаемое исключение замечательно отлавливается. Тут дело не в ОС.
...
Рейтинг: 0 / 0
C++ Builder XE5. TADOConnection. try catch. Не работает.
    #39578267
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrandrkkealon(Ruslan),

авторслучайно, не в потоке делаете это?
1. Почти уверен, что в основном (и единственном) потоке всё происходит. Скажем так, в DLL дополнительных потоков не создаю, а вызывающее приложение не моего авторства, но там, скорее всего, тоже дополнительных потоков нет. А если не в основном потоке меня вызывают, что это меняет?
2. При сборке на MS VC обсуждаемое исключение замечательно отлавливается. Тут дело не в ОС.
с рантайм-библами собранное скорее всего, так?

потоки да, скорее всего не при чём тогда
...
Рейтинг: 0 / 0
C++ Builder XE5. TADOConnection. try catch. Не работает.
    #39578344
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что там в этом Билдере -- один борланд уже только знает.
Тебе придется повторить подвиг Орфея...
...
Рейтинг: 0 / 0
C++ Builder XE5. TADOConnection. try catch. Не работает.
    #39581131
andrandrk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторс рантайм-библами собранное скорее всего, так?

Собирал со снятым флагом "Build with runtime packages". Решил взвести флаг и пересобрать. Ошибка отловилась.
Учитывая эту вводную, можно что-то сделать?
...
Рейтинг: 0 / 0
C++ Builder XE5. TADOConnection. try catch. Не работает.
    #39581141
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrandrkавторс рантайм-библами собранное скорее всего, так?

Собирал со снятым флагом "Build with runtime packages". Решил взвести флаг и пересобрать. Ошибка отловилась.
Учитывая эту вводную, можно что-то сделать?
объекты исключений в разных библиотеках создаются и соответственно вызывающий не знает что ей за пофигень подсунули и поймать не может

кухню всю покажи как вызываешь и куда идёт вызов, обычно такие дела кодами возврата делаются или SafeCall можно использовать для облегчения
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / C++ Builder XE5. TADOConnection. try catch. Не работает.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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