Конференция "Базы" » Не могу перехватить исключение [D7]
 
  • ZAlex (09.09.11 06:45) [0]
    Есть проблема: работаю с удаленной базой данных, связь не стабильна, пробую проверить наличие соединения при помощи конструкции типа:
    try
      ADOConnection.Connected := True;
    except
       on E : Exception do
         ShowMessage(E.ClassName+'  '+E.Message);
    но except не срабатывает, выскакивает сисемная ошибка. Подскажите почему. Или кто-нибудь знает другой способ проверки связи?
  • OW © (09.09.11 08:36) [1]
    срабатывает.
    запустите один exe - увидите
  • ZAlex (09.09.11 09:24) [2]
    если бы срабатывало, я не стал бы задавать вопрос
  • OW © (09.09.11 10:12) [3]
    Tools-DebuggerOptions-LanguageException
    StopOnDelphiException
    снять.

    except не срабатывает?
  • OW © (09.09.11 10:15) [4]
    для чистоты - новый проект начните

    procedure TForm1.Button1Click(Sender: TObject);
    begin
     try
       ADOConnection1.ConnectionString := 'йцукенгшщз';
       ADOConnection1.Connected := True;
     except
        on E : Exception do
        begin
          ShowMessage(E.ClassName+'  '+E.Message);
          raise;
        end;
     end;
    end;
  • Ega23 © (09.09.11 10:46) [5]

    > если бы срабатывало, я не стал бы задавать вопрос


    скорее всего ошибка в другом месте
  • Ega23 © (09.09.11 10:59) [6]
    Есть версия, что CoInitialize не вызвал.
  • ZAlex (09.09.11 11:01) [7]
    Похоже, что проблема возникла именно из-за ADOConnection. Системное сообщение об ошибке возникает еще до того, как Delphi перехватить исключение. Как это обойти, не знаю.
  • OW © (09.09.11 11:18) [8]
    ADOConnection - создан динамически?
  • ZAlex (09.09.11 12:50) [9]
    НИКАК НЕТ
  • Медвежонок Пятачок © (09.09.11 13:01) [10]
    Все просто.
    Лежит оно на датамодуле, который создается во вторичном потоке.
    CoInitialize не вызван + ШоуМессадж не из главного среда.
  • OW © (09.09.11 13:17) [11]

    > Медвежонок Пятачок ©   (09.09.11 13:01) [10]

    вероятнее всего.
    "Но надо же понять что это за слово (с) День выборов"


    > ZAlex  

    а так?

    unit UnitXX
    ...
    begin
     CoInitializeEx(nil, 0);
    end.
  • sniknik © (11.09.11 15:08) [12]
    > Не могу перехватить исключение
    больно слышать.

    > а так?
    чревато, ибо поток (раз допредполагались до них) все одно не тот. (или уже можно определять модуль в отдельный поток, оставляя написание как есть?)
  • ZAlex (12.09.11 07:08) [13]
    >OW

    Tools-DebuggerOptions-LanguageException
    StopOnDelphiException
    снять.

    except не срабатывает!!
  • ZAlex (12.09.11 07:12) [14]
    CoInitializeEx  не срабатывает, ибо, похоже, обращение к ADOConnection открывает по любому свой поток (?). Неужели никто с подобной ситуацией не сталкивался?
  • Медвежонок Пятачок © (12.09.11 08:47) [15]
    CoInitializeEx  не срабатывает

    Это функция
  • Медвежонок Пятачок © (12.09.11 08:49) [16]
    Кроме того, не надо делать шоумессадж в обработчике исключения.
  • sniknik © (12.09.11 09:47) [17]
    > CoInitializeEx  не срабатывает, ибо, похоже
    на что похоже это только из сообщения ошибки видно, а все что тут было в ветке все ТОЛЬКО предположения, т.к. реальной, достоверной инфы от тебя нет. даже то есть поток/нет потока ты не подтвердил, и зачем тогда CoInitialize ??? притом что его работа/не работа зависит от месторасположения. где у тебя тоже не понятно. можно также предположить с ним ты "ловишь рыбу там где ее нет, на катке например © анекдот"
  • sniknik © (12.09.11 09:54) [18]
    > ADOConnection открывает по любому свой поток (?).
    не по любому, а при только при асинхронном подключении.

    > Неужели никто с подобной ситуацией не сталкивался?
    с какой? у тебя твоя не описана. нам не известна.
    то что ты считаешь, что все объяснил, информации не добавляет.
  • Cobalt © (12.09.11 10:46) [19]
    > ZAlex , если хочешь помощи - хватит партизанить и выкладывай, что и как ты делаешь.
    Создаешь ли ты сам потоки, может у тебя консольная прога, или сервис - ты же не сообщил о программе ничего существенного.
 
Конференция "Базы" » Не могу перехватить исключение [D7]
Есть новые Нет новых   [134431   +11][b:0][p:0.001]