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

Вниз

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

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

Наверх




Память: 0.49 MB
Время: 0.065 c
11-1168594562
Fregl
2007-01-12 12:36
2007.08.26
Предложение по реструктуризации форума


2-1186392643
pirks
2007-08-06 13:30
2007.08.26
Железо


2-1185987668
XL007
2007-08-01 21:01
2007.08.26
Cgi под windows


2-1186099361
Riply
2007-08-03 04:02
2007.08.26
RtlDecompressBuffer - использование в цикле.


15-1185907434
ArtemESC
2007-07-31 22:43
2007.08.26
Вопросик маленький





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский