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

Вниз

Что-то вот подумалось. Подавить ошибки, кто-то когдато спрашивал   Найти похожие ветки 

 
Vlad Oshin ©   (2007-07-27 09:56) [0]

ставим сюда:  Application.OnException := MyProc;

вот такое в своем модуле:
procedure TMyComp.MyProc(Sender: TObject; E: Exception);
begin
 if EnabledM then showmessage(e.Message);
 Fmessage:=datetimetostr(now)+"|"+e.Message;
end;

и программа не вывалит какое либо окно, необработанное или не подавленное нами же

За метлой уже пошел :)


 
ya00011   (2007-07-27 09:58) [1]

Гыы... долго думал то?:)))


 
Kolan ©   (2007-07-27 10:17) [2]

> За метлой уже пошел :)

Еще есть такой класс ApplicationEvents&#133


> и программа не вывалит какое либо окно

Я лично вывод окна тоже подавляю, так как обычно это прерывает работу пользователя(в том же фотошопе меня это просто бесит)&#133


 
umbra ©   (2007-07-27 10:22) [3]


> и программа не вывалит какое либо окно, необработанное или
> не подавленное нами же

И что, при этом работа продолжится как ни в чем не бывало?


 
Alkid ©   (2007-07-27 10:26) [4]


> и программа не вывалит какое либо окно, необработанное или
> не подавленное нами же

Дурь какая-то. Смысл-то в это какой? Я всегда, дурак, думал, что надо код писать так, что бы он сам свои ошибки обрабатывал и юзеру эксепшенов не выбрасывал. Оказывается я ошибался. Пишем кривую программу, а потом хором глушим все сообщения об ошибках динамитом. Красота!


 
DVM ©   (2007-07-27 10:31) [5]


> Alkid ©

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


 
Vlad Oshin ©   (2007-07-27 10:38) [6]


> И что, при этом работа продолжится как ни в чем не бывало?

нет, дальше не будет работать, просто ошибка не вывалит


> Я всегда, дурак, думал, что надо код писать так, что бы
> он сам свои ошибки обрабатывал и юзеру эксепшенов не выбрасывал

100%

Например, на демонстрации или поджимают сроки
надо просто все заглушить и все. Потом доделать, разумеется.


 
SlymRO ©   (2007-07-27 10:39) [7]

Vlad Oshin ©   (27.07.07 10:38) [6]
Что в россии временно... то навсегда :(


 
Игорь Шевченко ©   (2007-07-27 10:42) [8]


> Потом доделать, разумеется.


нет ничего более постоянного, чем временное.

И все-таки, лишний раз убеждаюсь, что программистов мало. Это удручает.


 
Sandman29 ©   (2007-07-27 11:07) [9]

Java рулит в этом отношении, потому как заставляет программистов задуматься над тем, что делать с каждой ошибкой.


 
DiamondShark ©   (2007-07-27 11:51) [10]


> потому как заставляет программистов задуматься

Почему жаба не заставляет в коде, содержащем выражение типа

x = a / b * c

написать отлов арифметического переполнения и деления на ноль или задекларировать их в throws?


 
Alkid ©   (2007-07-27 11:56) [11]


> Java рулит в этом отношении, потому как заставляет программистов
> задуматься над тем, что делать с каждой ошибкой.

Ой, Джава - это другой перебор :)
ИХМО checked exceptions - это пример смирительной рубашки. Не зря же там ввели RunTime Exception, при помощи которой можно класть болт на декларацию исключений.


 
Sandman29 ©   (2007-07-27 12:14) [12]

DiamondShark ©   (27.07.07 11:51) [10]

А я и не говорил, что она лишена недостатков. Но уж лучше хоть что-то, чем вообще ничего.

Зы. Ни разу не видел исключение при делении на ноль в своих java-программах :)


 
Sandman29 ©   (2007-07-27 12:17) [13]

Alkid ©   (27.07.07 11:56) [11]

Ага, а Error ввели, чтобы каждый оператор не заворачивать в обработчик системной ошибки виртулаьной машины? :)


 
clickmaker ©   (2007-07-27 14:46) [14]


> программистов мало. Это удручает

почему?
меньше конкуренции... )


 
Игорь Шевченко ©   (2007-07-27 14:55) [15]

clickmaker ©   (27.07.07 14:46) [14]


> почему?
> меньше конкуренции... )


Отсутствие конкуренции ведет к застою. А кому приятно ощущать себя застоявшимся ? :)


 
oxffff ©   (2007-07-27 15:30) [16]


> Vlad Oshin ©   (27.07.07 09:56)  


Так наверно будет удобнее.

procedure Suppresser(Obj:Tobject;Sender: TObject; E: Exception);

const SuppressException:TMethod=(Code:@Suppresser;Data:nil);

procedure Suppresser(Obj:Tobject;Sender:TObject;E:Exception);
begin
//Do not use obj ref
end;

Application.OnException:=TExceptionEvent(SuppressException);

Или даже так.

procedure Suppresser;

const SuppressException:TMethod=(Code:@Suppresser;Data:nil);

procedure Suppresser;
begin

end;

Application.OnException:=TExceptionEvent(SuppressException);


 
Dimka Maslov ©   (2007-07-27 17:23) [17]

Kolan ©   (27.07.07 10:17) [2] Прав. Есть такая штука как ApplicationEvents. Будучи один раз кинута на форму она переопределяет внутрение указатели на события объекта Application, после чего до них уже недостучаться. Я тоже долгно ломал голову, пока не протрассировал модкль Forms.


 
P_   (2007-07-27 18:39) [18]

Зачем же так?


 try
   
   ...наш код...

 except on E:Exception do
   Logger.ErrorLog("имя модуля, метода и метки в методе", E.Message);
 end;


 
Petr V. Abramov ©   (2007-07-27 19:45) [19]

> P_   (27.07.07 18:39) [18]
не уфигеешь? вот если соединить с форматтером Call-стека, который предлагал Alex Konshin - тогда да, да на верхнем каком-нить уровне.


 
P_   (2007-07-27 20:02) [20]


> Petr V. Abramov ©   (27.07.07 19:45) [19]
>
> > P_   (27.07.07 18:39) [18]
> не уфигеешь? вот если соединить с форматтером Call-стека,
>  который предлагал Alex Konshin - тогда да, да на верхнем
> каком-нить уровне.


DELPHI32.DCI на что?



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

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

Наверх




Память: 0.52 MB
Время: 0.026 c
15-1185793624
VRSB
2007-07-30 15:07
2007.08.26
обработка условий


15-1185538788
Vlad Oshin
2007-07-27 16:19
2007.08.26
Пятничная задача: Как просверлить квадратное отверствие?


2-1186060016
JanMihail
2007-08-02 17:06
2007.08.26
Как высвободить память занимаемую TWebBrowser ом


15-1185300419
JetAPI
2007-07-24 22:06
2007.08.26
Turbo Delphi Explorer - не знаю на чем сделать выбор.


15-1185449901
Галинка
2007-07-26 15:38
2007.08.26
.pdf на ПДА