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

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

Выключаем обработчик ошибок.. [D5, D6, 95/98, ME, XP]


Dr.M@$ ©   (2007-05-22 10:19:00) 

День добрый многоуважаемые коллеги!
Праблема в следуйщем: мое приложение выкидывает иногда на передний план инфу об ошибке, (например "file nod found" или типа того ) нажимаю кнопку "OK" и работаю дальше....
вопрос: ка мне отключить эти ошибки, а точнее чтом приложение неостанавливало а например все ошибки посылало бы в какой нить лог файл??


Anatoly Podgoretsky   (2007-05-22 19:22:00) [1]

> Плохиш  (22.05.2007 11:22:09)  [9]

Но еще меньше нужна программа, которая прячет ошибки


Anatoly Podgoretsky   (2007-05-22 19:21:00) [2]

> ЮЮ  (22.05.2007 10:46:04)  [4]

Придется дважды проверять, один раз как ты рекомендуешь, а второй раз при открытии.


Dr.M@$   (2007-05-22 13:27:00) [3]

....Ну  вообщето я ошибку у себя откапал (даче 6 штук :) между каждой строчке гдн может быть ошибка вставил label. и выводил необходимый текст... вот так мы победили сырость :) ну а логи писать мне надо.... сейчас я этим займусь.. всем спасибо )


Плохиш   (2007-05-22 11:51:00) [4]


> Dr.M@$ ©   (22.05.07 11:25) [10]

Программист преднозначен не только для того, чтобы натоптать какой-то код, но и для того, чтобы согласно логике программы обработать возможные исключения в момент их возникновения и сделать какую-то обработку, а для этого в делфи введена конструкция try ... except ... end, о использовании которой написано, имхо, в любой книге для чайников. Но поколение компутикос книгов/документации/справок не читает, они же не для них писаны, а для этих, которые здесь на вопросы отвечают...


GelVit   (2007-05-22 11:39:00) [5]

кидаешь на форму ApplicationEvents1 и в обработчике onException

procedure TForm.ApplicationEvents1Exception(Sender: TObject; E: Exception);
var Filename: string;
   LogFile: TextFile;
begin
{подготавливает файл журнала}
Filename:= ChangeFileExt(Application.ExeName, '.log');
AssignFile (LogFile, Filename);
if FileExists(Filename) then
   Append(LogFile)     {открыть сушествующий файл}
else Rewrite(LogFile); {cоздать новый файл}
{записать файл и показать ошибку}
writeln(LogFile, DateTimeToStr(Now)+ ':' + E.Message);
Application.ShowException(E);
CloseFile(LogFile); {закрыть файл}
end;

будет писать в лог


{RASkov}   (2007-05-22 11:32:00) [6]

> [6] Dr.M@$ ©   (22.05.07 11:10)
> лавить? тоесть узанть номер ошибки итп? а отключать?

А ты "нарисуй" обработчик и посмотри его параметр E: Exception...

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

procedure TForm1.Exc(Sender: TObject; E: Exception);
begin
 ShowException(Sender, E);
end;

procedure TForm1.Button2Click(Sender: TObject);
var X,Y,Z: Integer;
begin
 X:=10; Y:=0;
 Z:=X div Y;
 Caption:=IntToStr(Z);
end;


где Exc - описана методом формы
 private
   procedure Exc(Sender: TObject; E: Exception);


Кстати, если оставить все как есть, но просто закомментировать строку в Exc:
procedure TForm1.Exc(Sender: TObject; E: Exception);
begin
 //ShowException(Sender, E);
end;

...то у тебя будут "гасится" все сообщения об VCL ошибках, что конечно не есть верно. Так как этот обработчик нужен именно для обработки исключений, а не их скрытие....

> [10] Dr.M@$ ©   (22.05.07 11:25)

Вот там же и в лог можно писать....


ЮЮ   (2007-05-22 11:31:00) [7]

> хотел чисто ловить и записывать все ошибки в лог файл


Нет, ты хотел "ка мне отключитьэти ошибки, а точнее чтом приложение неостанавливало". Отсюда и ответы такие :)


Dr.M@$   (2007-05-22 11:25:00) [8]

:) ясно... хотел чисто ловить и записывать все ошибки в лог файл... а получил..... :(


Плохиш   (2007-05-22 11:22:00) [9]


> Dr.M@$ ©   (22.05.07 11:11) [7]
> может есть какой нибдь чудо прификс отключающий ошибки

Есть, называется "программист". Вот на кой ляд нужна программа, которая работает с ошибками?


ЮЮ   (2007-05-22 11:12:00) [10]

> да про файл я для примера написал....

А я для примера ответил :) Будут конкретные примеры - заходи ещё.

P/S/ Ошибки надо исправлять в программе, а не подавлять сообщения о них.


Dr.M@$   (2007-05-22 11:11:00) [11]

может есть какой нибдь чудо прификс отключающий ошибки например
{-I}   ??? :)


Dr.M@$   (2007-05-22 11:10:00) [12]


> VCL'овские ошибки можно ловить на Application.OnException.
> ...

лавить? тоесть узанть номер ошибки итп? а отключать?


Dr.M@$   (2007-05-22 11:09:00) [13]

да про файл я для примера написал....


ЮЮ   (2007-05-22 10:46:00) [14]

> нажимаю кнопку "OK" и работаю дальше....

Т.е. есть файл, нет файла - твоей программе пофиг? Она в обоих случаях работает правильно и одинаково? Ну-Ну :)

>(например "file nod found" или типа того )
Исключениz, которые можно избежать, лучше избегать. Чтобы не вываливалось "file nod found" никто не мешает проверить FileExists.


{RASkov}   (2007-05-22 10:28:00) [15]

> [2] Dr.M@$ ©   (22.05.07 10:23)

Ну сделать прогу так, чтоб их(ошибок) не было...
VCL'овские ошибки можно ловить на Application.OnException....


Dr.M@$   (2007-05-22 10:23:00) [16]

ну может что то есть такое спещифическое?? мне просто часто выкидывает ошибки об scaneLine !!!


Сергей М.   (2007-05-22 10:21:00) [17]


> ка мне отключить эти ошибки


В общем случае никак.

Ошибка ошибке рознь.


Наверх

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