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

Вниз

игнорирование ошибок   Найти похожие ветки 

 
Redline   (2006-08-01 15:09) [0]

Как можно сделать так, чтобы программа игнорировала все ошибки не выдавая никаких окон?


 
Сергей М. ©   (2006-08-01 15:11) [1]

Ну и нахрен такая программа нужна ?


 
Юрий Зотов ©   (2006-08-01 15:15) [2]

Написать программу без ошибок.


 
Джо ©   (2006-08-01 15:15) [3]

В файле проекта выставить try/exception или назначить свой обработчик для Application.OnException.


> Ну и нахрен такая программа нужна ?

Например, ошибки можно просто заносить в лог.


 
Сергей М. ©   (2006-08-01 15:18) [4]


> Джо ©   (01.08.06 15:15) [3]


> Например, ошибки можно просто заносить в лог.


Так это же не игнорирование ошибок)..
Это их запланированная обработка !


 
DprYg ©   (2006-08-01 15:20) [5]

try...except end;
В промежутке except end ничего не писать


 
Romkin ©   (2006-08-01 15:24) [6]

DprYg ©   (01.08.06 15:20) [5] Шоб ты усю жисть такие программы отлаживал! :)
Redline   (01.08.06 15:09)  Application.OnException попробуй. Там лог пиши. Хотя я сомневаюсь, что это нужно, как правило, перехват всех ошибок до добра не доводит...


 
@!!ex ©   (2006-08-01 15:38) [7]

Ха. А директивы компилятора не канают?


 
@!!ex ©   (2006-08-01 15:40) [8]

Type Switch
Syntax {$C+} or {$C-}
{$ASSERTIONS ON} or {$ASSERTIONS OFF}
Default {$C+}
{$ASSERTIONS ON}
Scope Local
Remarks

The $C directive enables or disables the generation of code for assertions in a source file. {$C+} is the default.
Since assertions are not usually used at runtime in shipping versions of a product, compiler directives that disable the generation of code for assertions are provided. {$C-} will disable assertions.


 
Сергей М. ©   (2006-08-01 15:43) [9]

SEH/VEH-штука сложная)


 
Redline   (2006-08-01 15:55) [10]

Вообщем я остановился на OnException, но есть еще одна проблема. В обычной проге процедура присваевается так:

type
 TForm1 = class(TForm)
 private
   { Private declarations }
 public
   Procedure Exeptions(Sender:TObject; E:Exception);
 end;

Procedure TForm1.Exeptions(Sender:TObject; E:Exception);
Begin

end;

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


а как быть если прога типа:

Program

begin

end. ?


 
Ketmar ©   (2006-08-01 15:58) [11]

>@!!ex ©   (01.08.06 15:40) [8]
не канают.

>Сергей М. ©   (01.08.06 15:43) [9]
а вот и не правда! %-)


 
Сергей М. ©   (2006-08-01 16:00) [12]


> Ketmar ©   (01.08.06 15:58) [11]


> а вот и не правда


А вот и не облажайся.


 
DrPass ©   (2006-08-01 16:02) [13]


> Program
>
> begin
>
> end

Program

begin
try
//вот тут пишем программу
except
//вот тут вопреки всем правилам приличного программирования не пишем ничего
end;
end. ?


 
Ketmar ©   (2006-08-01 18:41) [14]

>Сергей М. ©   (01.08.06 16:00) [12]
а вот и не облажаюсь. %-) использую SEH в asm-коде. ничего сложного не заметил. документации приличной, правда, тоже не нашёл, но использовать это не мешает.


 
Anatoly Podgoretsky ©   (2006-08-01 21:01) [15]

Redline   (01.08.06 15:09)  
Это очень умно, пользователь не должен знать, что у тебя есть ошибки, а то что работать не будет, как то не важно.


 
Rial ©   (2006-08-01 21:04) [16]

В догонку за темой мой вопрос.

Вот код:

procedure GraphMeh;

Uses
... ;

procedure BeginFlags(Const Init:Boolean);
begin
PaintBlocked:=Init;
TimerBlocked:=Init;
end;

begin
Try
With Application do begin
 BeginFlags(True);
 Initialize;
 CreateForm(THeadForm, HeadForm);
 If (ProcessTerminated)then Exit;
 BeginFlags(False);
 Run;
end;//With
Except
ShowMessage("Error !");
end;

В процессе работы никаких глюков не возмикает.
После закрытия программы все равно 50/50 вылезает AV.
Всегда по разным адресам.

Глобальный обработчик исключений установлен,
но он почему то не срабатывает.

Ни в одном из моих или чужих модулей нет ни
Initialization ни Finalization (модули Borland не в счет).

Ошибка в чужом модуле, к исходному коду которого доступа не имею.
Подскажите, как все таки "заткнуть" это ошибку, чтобы не появлялась вовсе ?


 
Ketmar ©   (2006-08-01 21:05) [17]

> [15] Anatoly Podgoretsky ©   (01.08.06 21:01)

есть подозрение, что знать не должно начальство. а то премии не даст. %-)


 
Ketmar ©   (2006-08-01 21:07) [18]

> [16] Rial ©   (01.08.06 21:04)

точно в чужом? отослать разработчику bugreport. пусть пофиксит.


 
Rial ©   (2006-08-01 21:34) [19]

Да, точно, там с указателями ошибка.
"Разработчик" чихать хотел на это все.

Но почему не работает try ... except
и как все же избавиться от этого ?

Понимаю, что некрасиво, но другого я выхода,
кроме как игнор, не вижу.
Тем более что ошибка только после зарытия.


 
Ketmar ©   (2006-08-01 21:51) [20]

> [19] Rial ©   (01.08.06 21:34)

тогда только переписать. потому как неизвестно, что оно там портит своими кривыми указателями.


 
pasha_golub ©   (2006-08-01 22:16) [21]

Дяди, а не дай Бог Access Violation и до попы ваши перехваты. ;0) Вывалится родная, и чмокнуть не успеете. ;0)


 
Ketmar ©   (2006-08-01 22:20) [22]

> [21] pasha_golub ©   (01.08.06 22:16)

фигушки. SetUnhandledExceptionFilter() %-)


 
Loginov Dmitry ©   (2006-08-02 08:03) [23]

> Но почему не работает try ... except
> и как все же избавиться от этого ?


А с чего он должен работать? За рамки Run выполнение программы не выходит. Иначе в случае любой пустяцкой ошибки программа бы вываливалась. Да даже CreateForm() ошибку не пропустит. Так что единственный здесь выход, который я вижу -

назначить свой обработчик для Application.OnException



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

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

Наверх




Память: 0.52 MB
Время: 0.052 c
15-1156521040
saxon
2006-08-25 19:50
2006.09.17
Тест Джоэла


15-1156496813
Гарик
2006-08-25 13:06
2006.09.17
А что сделалаешь ты?


15-1156766876
TUser
2006-08-28 16:07
2006.09.17
Мул vs Осел


15-1156170789
Карелин Артем
2006-08-21 18:33
2006.09.17
Намудрил блин с настройками синезуба...


2-1156679934
The_SloN
2006-08-27 15:58
2006.09.17
Есть команда DeleteFile(‘Filename’)