Текущий архив: 2002.12.26;
Скачать: CL | DM;
ВнизКак подавить вывод сообщения об ошибке. Найти похожие ветки
← →
Sergeyy (2002-12-17 08:55) [0]Иногда мне нужно просто подавить вывод сообщения об ошибке. Например при сохранении эксельного файла на месте существующего, если я не отключаю алерты экселя и потом отказываюсь от сохранения, появляется правильное, но ненужное мне сообщение об ошибке. Я давлю его путым блоком except. То есть
var
MySheet: Variant; // переменная для позднего связывания.
begin
....
try
MySheet.SaveAs("c:\myfile.xls");
except
end;
...
end;
Правильно ли это? И если нет, то как надо?
← →
Юрий Зотов (2002-12-17 09:06) [1]Это нормально. С точки зрения стиля, конечно, лучше обходиться без подобных решений, но иногда приходится.
← →
Anatoly Podgoretsky (2002-12-17 09:22) [2]В дополнение к выше сказанному, не стоит давить все ошибки, проанализируй не нужные подави, а нужные снова возбуди или выдай свое сообщение. А в таком виде только если в исключительных случаях
← →
Andrey007 (2002-12-17 10:51) [3]Кстати, я тут лазил по исходникам Delphi компонент (D5) и в каком-то модуле видел как раз такую конструкцию
try
какие-то операторы
except
;
end;
← →
Andrey007 (2002-12-17 11:00) [4]В модуле CorbaObj.pas
destructor TCorbaStub.Destroy;
begin
try
FStub := nil;
except
// Ignore exceptions when disconnecting
end;
inherited Destroy;
end;
В модуле CorbaCon
procedure TCorbaConnection.GetProviderNames(Proc: TGetStrProc);
var
List: Variant;
I: Integer;
begin
Connected := True;
VarClear(List);
try
List := (IUnknown(AppServer) as IAppServer).AS_GetProviderNames;
except
{ Assume any errors means the list is not available. }
end;
if VarIsArray(List) and (VarArrayDimCount(List) = 1) then
for I := VarArrayLowBound(List, 1) to VarArrayHighBound(List, 1) do
Proc(List[I]);
end;
В модуле System
procedure NotifyModuleUnload(HInstance: LongWord);
var
P: PModuleUnloadRec;
begin
P := ModuleUnloadList;
while P <> nil do
begin
try
P.Proc(HInstance);
except
// Make sure it doesn"t stop notifications
end;
P := P.Next;
end;
end;
В модуле ADODB
function TADOConnection.GetDefaultDatabase: WideString;
begin
if Connected then
try
Result := ConnectionObject.DefaultDatabase
except
{ Ignore errors reading this property }
end
else
Result := FDefaultDatabase;
end;
и т.д. и т.п.
Так что ничего страшного в использовании этого приёма я не вижу.
← →
Anatoly Podgoretsky (2002-12-17 11:10) [5]Ты обратил внимание, что они все документировал почемы так поступили и случаи в которых это использовано, обоснованны
← →
Andrey007 (2002-12-17 11:17) [6]Насчёт документирования - ты имеешь в виду комментарии в тексте? Насчёт обоснованности - не знаю. А как, по-твоему, отличать обоснованное использование этого приёма от необоснованного?
С уважением.
Страницы: 1 вся ветка
Текущий архив: 2002.12.26;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.007 c