Форум: "Начинающим";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];
ВнизВыключаем обработчик ошибок.. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.042 c