Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Обработка исключений


Автор: devmstr 31.12.2004, 10:36
Как перехватить все исключения в определенном блоке и уничтожить их.

P.S. С Новым Годом!

Автор: Bes 31.12.2004, 10:40
:-)
Поставить в самом начале блока трай в самом конце ексепт енд и все будет или работать или не работать.
Не совсем понял вопроса.

Автор: devmstr 31.12.2004, 23:02
Но сообщения об ошибках все равно будут выводится!

Автор: <Spawn> 1.1.2005, 00:35
Цитата(magician @ 31.12.2004, 15:02)
Но сообщения об ошибках все равно будут выводится!

Разумеется, если запускать программу из Дельфи с включенной опцией Debugger Options > Language Exceptions > Stop on Delphi Exceptions. Запускай прогу либо вне среды разработки, либо отключи вышеуказаную опцию.

Автор: asdf 1.1.2005, 01:45
deleted

Автор: Bes 10.1.2005, 09:46
2magician:
Цитата
Но сообщения об ошибках все равно будут выводится!

Только при отладке.

Автор: Cetus 10.1.2005, 11:02
Можно сделать таким образом:

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnException := AppException;
end;

procedure TForm1.AppException(Sender: TObject; E: Exception);
begin
// do nothing or something
showmessage('exception was destroyed');
end;

Автор: Akella 10.1.2005, 12:06
try
код, который может выхвать исключения
except
//сюда ничего не пишешь
end;

!!! Обрати внимание, что при запуске приложения в среде Delphi все равно исключения буду "всплывать". Я в таких случаях вывожу ярлык на рабочий стол.

Автор: z-END 10.1.2005, 12:22
dsergey а можно просто это отключить в самих Дельфях:
Tools->Debugger Options->Language Exceptions->Stop on Delphi Exceptions (убрать галочку)

Автор: tcomponent 11.1.2005, 10:23
либо так :
через applicatyionevents
при этом сохранится лог с ошибками

procedure Tmainform.ApplicationEvents1Exception(Sender: TObject;
E: Exception);
var
filename:string;
logfile:textfile;
begin
// сохранение лога с ошибками
filename:=changefileext('Error','.log');
assignfile(logfile,filename);
if FileExists(filename)then
append(logfile)
else
rewrite(logfile);
writeln(logfile,datetimetostr(now)+':'+e.message);
closefile(logfile);
end;

Добавлено @ 10:25
в этом методе подавляютсЯ сообщения об еррорах

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)