Форум: "Начинающим";
Текущий архив: 2011.12.11;
Скачать: [xml.tar.bz2];
ВнизПочему warning? Найти похожие ветки
← →
Scott Storch (2011-08-25 17:12) [0]почему компилятор выдает warning - return value of function "MyFunc" might be undefined? функция ведь однозначно вернет либо 0 либо -1, или я что-то недогоняю.
function MyFunc(): Integer;
var
ItemIdList: TStringList;
begin
try
ItemIdList := TStringList.Create;
try
raise Exception.Create("");
try
Result := 0;
except
raise;
end;
finally
ItemIdList.Free;
end;
except
on E: Exception do
begin
Result := -1;
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ShowMessage(IntToStr(MyFunc()));
end;
← →
Scott Storch (2011-08-25 17:13) [1]raise Exception.Create(""); - это лишнее
← →
Inovet © (2011-08-25 17:19) [2]> [0] Scott Storch (25.08.11 17:12)
> ведь однозначно вернет
Инициализируй result, в finally он может быть неопределён.
← →
Сергей М. © (2011-08-25 17:24) [3]
> однозначно вернет либо 0 либо -1
Не вернет ни того ни другого, потому что
on E:Exception
эквивалентна
if E is Exception then
E теоретически может и не быть класса Exception и условие будет ложным
← →
Scott Storch (2011-08-25 17:25) [4]в функции должна быть такая логика, что если возникла какая-либо ошибка - возвращается -1, если выполнилась успешно - возвращается 0. Будет ли корректным вначале проинициализировать Result := -1;
function MyFunc(): Integer;
var
ItemIdList: TStringList;
begin
Result := -1;
try
ItemIdList := TStringList.Create;
try
Result := 0;
finally
ItemIdList.Free;
end;
except
on E: Exception do
LastErrorMessage := E.Message;
end;
end;
← →
Jeer © (2011-08-25 18:08) [5]
> Будет ли корректным вначале
всегда инициализировать Result
← →
Игорь Шевченко © (2011-08-25 18:22) [6]
> почему компилятор выдает warning
я бы убил за такой код
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.12.11;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c