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

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

Как подменить обработчик исключений? [D6, D7, Win95/98, WinXP]


Страницы:   1 2

Lin7 ©   (2004-07-27 10:57:00) 

Есть функция SetUnhandledExceptionFilter, с помощью которой можно подменить обработчик исключений.

Делаю:

type
P_EXCEPTION_POINTERS = ^EXCEPTION_POINTERS;

function MainFilter(P: P_EXCEPTION_POINTERS): integer; stdcall;
begin
Result := 0; // показывать системный диалог
// обработка возникших исключений
case P.ExceptionRecord.ExceptionCode of
   EXCEPTION_ACCESS_VIOLATION:
     begin
     end;
   EXCEPTION_DATATYPE_MISALIGNMENT:
     begin
     end;
   else
     begin
      MessageBox(0, 'MainFilter','Error', MB_OK );
      Result := 1; // не показывать системный диалог
     end;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 SetUnhandledExceptionFilter(@MainFilter);
end;

Пример взят из Инета... и не работает  :(
Кто-нибудь может мне растолковать, как правильно подменить обработчик исключений всего приложения?
У самого разобраться не получается.
Примерчик бы...

Спасибо.


Subdigger   (2004-07-27 11:24:00) [21]

public
   { Public declarations }
   procedure ExceptionHandler(Sender: TObject; E: Exception);
 end;

 Application.OnException := ExceptionHandler;


Digitman   (2004-07-27 11:22:00) [22]


> обработчик исключений всего приложения


исключения перехватываются/обрабатываются не на уровне приложения, а на уровнях каждого из кодовых потоков процесса приложения


VMcL   (2004-07-27 11:04:00) [23]

>>Lin7  (27.07.04 10:57)

Чем не устраивает try/except?


Страницы:   1 2

Наверх

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