Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.10;
Скачать: CL | DM;

Вниз

Выключаем обработчик ошибок..   Найти похожие ветки 

 
Dr.M@$ ©   (2007-05-22 10:19) [0]

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


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


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


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

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


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

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


 
{RASkov} ©   (2007-05-22 10:28) [3]

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

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


 
ЮЮ ©   (2007-05-22 10:46) [4]

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

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

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


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

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


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


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

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


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

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


 
ЮЮ ©   (2007-05-22 11:12) [8]

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

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

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


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


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

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


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

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


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

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


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


 
{RASkov} ©   (2007-05-22 11:32) [12]

> [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)

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


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

кидаешь на форму 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;

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


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


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

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


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

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


 
Anatoly Podgoretsky ©   (2007-05-22 19:21) [16]

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

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


 
Anatoly Podgoretsky ©   (2007-05-22 19:22) [17]

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

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



Страницы: 1 вся ветка

Текущий архив: 2007.06.10;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.032 c
2-1179488279
RokyB
2007-05-18 15:37
2007.06.10
Привязка компонентов к размере формы


11-1160673450
ANTPro
2006-10-12 21:17
2007.06.10
Easy Debug


2-1179581025
Rafik
2007-05-19 17:23
2007.06.10
TListView


15-1176818174
pasha_golub
2007-04-17 17:56
2007.06.10
Посоветуйте спелл чекер


15-1178804267
Desdechado
2007-05-10 17:37
2007.06.10
Шаблоны документов и их наполнение из БД