Форум: "Базы";
Текущий архив: 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