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

Вниз

Почему 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.007 c
3-1268482847
Grab3
2010-03-13 15:20
2011.12.11
Не применяются изменения в таблице InterBase


15-1313174177
Anatoly Podgoretsky
2011-08-12 22:36
2011.12.11
induc.2


15-1314304198
Юрий
2011-08-26 00:29
2011.12.11
С днем рождения ! 26 августа 2011 пятница


2-1314065077
анонимус
2011-08-23 06:04
2011.12.11
сглаживание, выделение границ и т.д и т.п.


15-1313501980
TInd
2011-08-16 17:39
2011.12.11
Работа с TIFF.