Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.036 c
5-1139574788
superoberon
2006-02-10 15:33
2006.09.17
ShellTreeView и ShellListView


2-1156751603
novill
2006-08-28 11:53
2006.09.17
Как устанавливать новые компоменты и не терять старых?


2-1156528209
Vidog
2006-08-25 21:50
2006.09.17
Функции


2-1156446999
GunGarry
2006-08-24 23:16
2006.09.17
ListBox


2-1156955753
zxcv
2006-08-30 20:35
2006.09.17
как узнать имя активного окна





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский