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

Тема в разделе "WASM.WIN32", создана пользователем LuckyDevil, 2 сен 2007.

  1. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    Всем доброго!
    Давно меня здесь не было и не было моих идиотских вопросов :).

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

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

    andrey_z New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2007
    Сообщения:
    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

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    Какая разница какая длл, стек один на весь поток=1 сех.
     
  4. andrey_z

    andrey_z New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2007
    Сообщения:
    14
    А там run-time оболочка вызываемой dll случаем не может его обработать?