Форум: "Основная";
Текущий архив: 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