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

Вниз

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

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

Наверх




Память: 0.48 MB
Время: 0.073 c
15-1161977193
Master_
2006-10-27 23:26
2006.11.12
Принцип поиска вирусов Антивирусниками


1-1159609615
AFFONYA
2006-09-30 13:46
2006.11.12
Поиск по тексту.


15-1161887904
Kerk
2006-10-26 22:38
2006.11.12
У меня столько энергии вырабатывается, что я ее гашу в труде (с)


2-1162114969
Серый
2006-10-29 12:42
2006.11.12
Таймер


2-1161328040
Cara
2006-10-20 11:07
2006.11.12
Определить статутус программы.





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