Глобальный перехватчик исключений

Discussion in 'WASM.WIN32' started by LuckyDevil, Sep 2, 2007.

  1. LuckyDevil

    LuckyDevil New Member

    Blog Posts:
    0
    Joined:
    Mar 10, 2005
    Messages:
    278
    Location:
    Uzbekistan
    Всем доброго!
    Давно меня здесь не было и не было моих идиотских вопросов :).

    Ситуевина слеудющая, пишу длл-ку для MSSQL, так назваемые Extended Stored Procedure, так вот в ней я вызываю другую длл-ку от стороннего разработчика, цель ее соединение с удаленным сервером, обмен информацией и т.д, все бы ничего, да есть изьян, соединение проходить достаточно долго, в связи с чем я не сразу закрываю его, а ожидаю следующего набора данных для передачи, так вот иногда это ожидание превышает время которое установлено на удаленном сервере, соотвественно сервер принудительно его закрывает( так же может быть ситуация, физичского разрва соединения(падение канала связи и т.д.)), но ...
    Есть но, признаюсь пишу я все это хозяйсвто на Дельфи, и если я запускаю проект из под IDE, то на мое счастье я получаю это самое исключение с сообщением о том, что удаленный сервер разорвал соединение, а вот если я запускаю программу самостоятельно, то все глухо как в танке, и конечно же попытка получит или отправить новую порцию данных, приводит к полному зависанию программы.
    Как быть, можно ли создать глобальный перехват исключений на подобе облочки IDE Дельфи?

    Заранее все спасибо!
     
  2. andrey_z

    andrey_z New Member

    Blog Posts:
    0
    Joined:
    Aug 17, 2007
    Messages:
    14
    try/except в твоем коде получает исключение? (хотя что-то я сомневаюсь что из другой dll можно получить исключение)

    В обычных приложениях работало:
    Application.OnException := <handler>;
    (вызывалось для не обработанных). Может быть покопать в эту сторону...

    да и сама постановка задачи какая-то "мощная". подобные ситуации достаточно нормальные и решаться они по идее должны "нормальными" средствами. Никогда не занимался программированием ext SP. На вскидку посмотрел BOL - может стоит присмотреться к функциям srv_message_handler, srv_pfield (SRV_STATUS); либо через интерфейс ODBC это как-то отслеживать (там пример "xp_odbc" есть)?
     
  3. tylerdurden

    tylerdurden New Member

    Blog Posts:
    0
    Joined:
    Feb 25, 2004
    Messages:
    322
    Какая разница какая длл, стек один на весь поток=1 сех.
     
  4. andrey_z

    andrey_z New Member

    Blog Posts:
    0
    Joined:
    Aug 17, 2007
    Messages:
    14
    А там run-time оболочка вызываемой dll случаем не может его обработать?