Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по Exception в TThread-е


alles ©   (2007-08-16 11:41:00) 

Добрый день.
Есть один поток который запускается из основного потока. В нем идет какая-та проверка и если она не выполняется, поток генерирует Exception. Примерно так:

if not Assigned(NetShareEnumNT)
                    raise Exception.Create('NetShareEnumNT not assigned');                


как правильно передать этот Exception основному потоку и там показать окошку с Exception и завершить этот поток?
Спасибо


alles   (2007-08-16 13:07:00) [1]

Спасибо всем, иду читать :)


Leonid Troyanovsky   (2007-08-16 12:27:00) [2]


> alles ©   (16.08.07 11:41)  

> как правильно передать этот Exception основному потоку и
> там показать окошку с Exception и завершить этот поток?

http://dn.codegear.com/article/10452

--
Regards, LVT.


Сергей М.   (2007-08-16 12:14:00) [3]

Но лучше всего недопускать ситуаций с необработанными исключениями в потоке, оборачивая тело метода Execute в блок try..except


Сергей М.   (2007-08-16 12:12:00) [4]

оч просто.

Для этого класс TThread предоставляет публичный метод FatalException.

Им можно воспользоваться, например, так:

Основной поток после создания доолнительного потока в suspended-режиме устанавливает обработчик OnTerminate, в котором анализируется состояние этого св-ва. Если оно не равно nil, то в ходе работы доп.потока было зафиксировано необработанное тобой исключение, которое можно проанализировать (но не позднее вызова деструктора доп.потока) и при необходимости перевозбудить его вызовом raise FatalException


Наверх

Титульная страница Поиск, карта сайта Написать письмо