Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
C++ Builder XE5. TADOConnection. try catch. Не работает.
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, коллеги! Пишу dll на Embarcadero C++ Builder XE5. Для соединения с БД на MS SQL Server использую компонент TADOConnection. //====== try {SQLConnection->Connected = true;} catch(...) { // обработка исключения }; //====== Всё работает замечательно до тех пор, пока сервер не оказывается недоступен по той или иной причине. Дело в том, что обычный способ отлова исключений (try catch) не срабатывает, если запускать приложение не из под IDE, и программа аварийно завершает работу. Есть подозрение, что это, вообще, баг XE5. Если кто-то сталкивался с этой или подобной проблемой и решил её, прошу подсказать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2017, 17:39 |
|
||
|
C++ Builder XE5. TADOConnection. try catch. Не работает.
|
|||
|---|---|---|---|
|
#18+
andrandrk, а чем отличается try от __try помните? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2017, 09:33 |
|
||
|
C++ Builder XE5. TADOConnection. try catch. Не работает.
|
|||
|---|---|---|---|
|
#18+
Навскидку. __try используется с __except и __finally. Это не c++ конструкция, на сколько я понимаю, а надстройка среды. __try __except тоже, кстати, пробовал для отлова этого исключения. Эффект тот же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2017, 10:15 |
|
||
|
C++ Builder XE5. TADOConnection. try catch. Не работает.
|
|||
|---|---|---|---|
|
#18+
andrandrkНавскидку. __try используется с __except и __finally. Это не c++ конструкция, на сколько я понимаю, а надстройка среды. __try __except тоже, кстати, пробовал для отлова этого исключения. Эффект тот же. а какая ОСь? на Win XP были с какими-то исключениями похожие проблемы попробуйте сами сгенерить исключения, поймает например?: языковое исключение деление на ноль ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2017, 11:17 |
|
||
|
C++ Builder XE5. TADOConnection. try catch. Не работает.
|
|||
|---|---|---|---|
|
#18+
автора какая ОСь? Windows 7. try {1/0;} catch(...) { // обработка исключения }; Отлавливается замечательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2017, 11:26 |
|
||
|
C++ Builder XE5. TADOConnection. try catch. Не работает.
|
|||
|---|---|---|---|
|
#18+
andrandrkПишу dll на Embarcadero C++ Builder XE5. try {} catch(...) { // обработка исключения }; //====== Всё работает замечательно до тех пор, пока сервер не оказывается недоступен по той или иной причине. Дело в том, что обычный способ отлова исключений (try catch) не срабатывает, если запускать приложение не из под IDE, и программа аварийно завершает работу. Есть подозрение, что это, вообще, баг XE5. Если кто-то сталкивался с этой или подобной проблемой и решил её, прошу подсказать. Речь о 32 битном или 64 битном варианте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2017, 13:07 |
|
||
|
C++ Builder XE5. TADOConnection. try catch. Не работает.
|
|||
|---|---|---|---|
|
#18+
авторРечь о 32 битном или 64 битном варианте? 64 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2017, 14:25 |
|
||
|
C++ Builder XE5. TADOConnection. try catch. Не работает.
|
|||
|---|---|---|---|
|
#18+
andrandrk, в документации пример такой Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2017, 15:22 |
|
||
|
C++ Builder XE5. TADOConnection. try catch. Не работает.
|
|||
|---|---|---|---|
|
#18+
d7i, Документация читана. Собсна по ней и написан мой код (см. вопрос топика) - от вашего примера отличается только указанием класса исключения. Так тоже не работает. Пробовал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2017, 19:32 |
|
||
|
C++ Builder XE5. TADOConnection. try catch. Не работает.
|
|||
|---|---|---|---|
|
#18+
Забыл добавить. Экземпляр TADOConnection создаю динамически. То есть нет формы, нет компонента на форме. // В заголовочном файле: class TMyClass { //... private: TADOConnection* SQLConnection; }; //... // В конструкторе TMyClass: //... try {SQLConnection = new TADOConnection(0);} catch(...) { // обработка }; //... try {SQLConnection->Connected = true;} catch(...) { // обработка (исключение не ловится, вопрос топика) }; //... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2017, 19:43 |
|
||
|
C++ Builder XE5. TADOConnection. try catch. Не работает.
|
|||
|---|---|---|---|
|
#18+
andrandrk, на 7-ке вроде всё норм было случайно, не в потоке делаете это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2017, 19:45 |
|
||
|
C++ Builder XE5. TADOConnection. try catch. Не работает.
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), авторслучайно, не в потоке делаете это? 1. Почти уверен, что в основном (и единственном) потоке всё происходит. Скажем так, в DLL дополнительных потоков не создаю, а вызывающее приложение не моего авторства, но там, скорее всего, тоже дополнительных потоков нет. А если не в основном потоке меня вызывают, что это меняет? 2. При сборке на MS VC обсуждаемое исключение замечательно отлавливается. Тут дело не в ОС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2017, 14:34 |
|
||
|
C++ Builder XE5. TADOConnection. try catch. Не работает.
|
|||
|---|---|---|---|
|
#18+
andrandrkkealon(Ruslan), авторслучайно, не в потоке делаете это? 1. Почти уверен, что в основном (и единственном) потоке всё происходит. Скажем так, в DLL дополнительных потоков не создаю, а вызывающее приложение не моего авторства, но там, скорее всего, тоже дополнительных потоков нет. А если не в основном потоке меня вызывают, что это меняет? 2. При сборке на MS VC обсуждаемое исключение замечательно отлавливается. Тут дело не в ОС. с рантайм-библами собранное скорее всего, так? потоки да, скорее всего не при чём тогда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2017, 17:11 |
|
||
|
C++ Builder XE5. TADOConnection. try catch. Не работает.
|
|||
|---|---|---|---|
|
#18+
что там в этом Билдере -- один борланд уже только знает. Тебе придется повторить подвиг Орфея... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2017, 07:34 |
|
||
|
C++ Builder XE5. TADOConnection. try catch. Не работает.
|
|||
|---|---|---|---|
|
#18+
авторс рантайм-библами собранное скорее всего, так? Собирал со снятым флагом "Build with runtime packages". Решил взвести флаг и пересобрать. Ошибка отловилась. Учитывая эту вводную, можно что-то сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 15:55 |
|
||
|
C++ Builder XE5. TADOConnection. try catch. Не работает.
|
|||
|---|---|---|---|
|
#18+
andrandrkавторс рантайм-библами собранное скорее всего, так? Собирал со снятым флагом "Build with runtime packages". Решил взвести флаг и пересобрать. Ошибка отловилась. Учитывая эту вводную, можно что-то сделать? объекты исключений в разных библиотеках создаются и соответственно вызывающий не знает что ей за пофигень подсунули и поймать не может кухню всю покажи как вызываешь и куда идёт вызов, обычно такие дела кодами возврата делаются или SafeCall можно использовать для облегчения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2018, 16:07 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39577493&tid=2018002]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
74ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 183ms |

| 0 / 0 |
