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

Вниз

подавить показ сообщений об ошибках   Найти похожие ветки 

 
anton773 ©   (2006-09-12 21:22) [0]

Здравствуйте! как подавить показ сообщений об ошибках.(ошибки обрабатывает моя программа)


 
Desdechado ©   (2006-09-12 21:26) [1]

try - except


 
anton773 ©   (2006-09-12 21:34) [2]

Спасибо! почему- то не пришло в голову ;-)


 
Anatoly Podgoretsky ©   (2006-09-13 00:34) [3]

Это умно, голову в песок.


 
Германн ©   (2006-09-13 02:26) [4]

Дополню

> Anatoly Podgoretsky ©   (13.09.06 00:34) [3]

надеюсь АП не обидится! :-)
Очень умно "засовывать голову в песок", но задница-то при этом всё равно торчит!
Если речь идёт об обработке ошибок возникающих не внутри "своего собственного кода", нужно очень много знать и очень тщательно продумать, прежде чем пойти на try..except.


 
Desdechado ©   (2006-09-13 21:53) [5]

Германн ©   (13.09.06 02:26) [4]
Взялся дополнять, скажи тогда "прежде чем пойти на try..except end;" с пустым except-end. Это действительно глупо будет.


 
Германн ©   (2006-09-13 22:57) [6]


> Desdechado ©   (13.09.06 21:53) [5]
>
> Германн ©   (13.09.06 02:26) [4]
> Взялся дополнять, скажи тогда "прежде чем пойти на try..
> except end;" с пустым except-end. Это действительно глупо
> будет.
>

Ну я вообще-то смотрел на вопрос шире. Кроме того try.. except end; с пустым except-end. - это диверсия. Хотя даже очень известные и уважаемые люди делают такие глупости.


 
Anatoly Podgoretsky ©   (2006-09-13 23:23) [7]

Германн ©   (13.09.06 22:57) [6]
Ни разу не делал.


 
Германн ©   (2006-09-14 00:37) [8]


> Anatoly Podgoretsky ©   (13.09.06 23:23) [7]
>
> Германн ©   (13.09.06 22:57) [6]
> Ни разу не делал.
>

А я насчет Вас Анатолий и не сомневался :-)
Но тот, кого я имел ввиду Вам точно известен! Это некий житель Бельгии, который за свои компоненты не требует денег, а только почтовую открытку с видами местности, где живет пользователь. И который, по Вашим словам, в своё время отказался продать Borland"у свою библиотеку компонентов.


 
Anatoly Podgoretsky ©   (2006-09-14 19:33) [9]

Германн ©   (14.09.06 00:37) [8]
А у него есть подобный код?
А я о нем думал гораздо лучше.


 
anton773 ©   (2006-09-14 21:16) [10]


> Если речь идёт об обработке ошибок возникающих не внутри
> "своего собственного кода", нужно очень много знать и очень
> тщательно продумать, прежде чем пойти на try..except.

А что есть варианты? try...except abort end; Что-то лучшее по моему здесь придумать сложно.


 
Германн ©   (2006-09-15 01:38) [11]


> Anatoly Podgoretsky ©   (14.09.06 19:33) [9]
>
> Германн ©   (14.09.06 00:37) [8]
> А у него есть подобный код?
> А я о нем думал гораздо лучше.
>

Ну сами понимаете Анатолий, что "в лоб" такого кода у него нет. Во всяком случае я таких случаев не знаю.
Но есть код:
procedure TCustomWSocket.ASyncReceive(
   Error           : Word;
   MySocketOptions : TWSocketOptions);
var
   bMore  : Boolean;
   lCount : LongInt;
   TrashCan : array [0..1023] of char;
begin
   bMore := TRUE;
   while bMore do begin
       FLastError := 0;

       try
          if not TriggerDataAvailable(Error) then begin
              { Nothing wants to receive, we will receive and throw away  23/07/98 }
              if DoRecv(TrashCan, SizeOf(TrashCan), 0) = SOCKET_ERROR then begin
                  FLastError := WSocket_WSAGetLastError;
                  if FLastError = WSAEWOULDBLOCK then begin
                      FLastError := 0;
                      break;
                  end;
              end;
          end;

          { DLR Honor the socket options being passed as parameters }
          if wsoNoReceiveLoop in MySocketOptions then
              break;

          if FLastError <> 0 then
              bMore := FALSE
          {* Check if we have something new arrived, if yes, process it *}
          else if WSocket_ioctlsocket(FHSocket, FIONREAD,
                                      lCount) = SOCKET_ERROR then begin
              FLastError := WSocket_WSAGetLastError;
              bMore      := FALSE;
          end
          else if lCount = 0 then
              bMore := FALSE;
       except
          bMore := FALSE;
       end;
   end;
end;

Всё бы и ничего бы. Но в TriggerDataAvailable(Error) вызывается пользовательский обработчик OnXXXDataAvailable, в котором может возникнуть любое исключение, вплоть до AV и иже с ним. Ведь пользуются этим компонентом в т.ч. и ламеры, вроде меня!
А ведь тут даже var параметр Error никак не используется.
И всё это у меня приводило к смерти программы без каких-бы то ни было сообщений об ошибках!
P.S. Код процитирован из
Description:  TWSocket class encapsulate the Windows Socket paradigm
Creation:     April 1996
Version:      4.30


 
Германн ©   (2006-09-15 01:51) [12]


> anton773 ©   (14.09.06 21:16) [10]
>
> А что есть варианты? try...except abort end; Что-то лучшее
> по моему здесь придумать сложно.
>

Именно тут ты и "вляпаешься"!
Имхо нужно так:
try
bla-bla-bla
except
 on что-то do...
 on что-то do...
а далее либо:
 else что-то
либо else raise;



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

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

Наверх




Память: 0.5 MB
Время: 0.05 c
6-1141891745
Игорек
2006-03-09 11:09
2006.11.12
Работа с GPRS модемом


2-1161877554
AlexanderMS
2006-10-26 19:45
2006.11.12
Запретить программе отображаться на панели задач (TaskBar).


15-1161458189
Kolan
2006-10-21 23:16
2006.11.12
Автогенератор кода в BDS подставляет лишее inherited


2-1162122730
silversmith
2006-10-29 14:52
2006.11.12
I/O Error 32 при Rewrite


15-1161607292
Чипырик
2006-10-23 16:41
2006.11.12
Установка компонентов