Главная страница
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.48 MB
Время: 0.01 c
4-1252784613
Ruzzz
2009-09-12 23:43
2011.12.11
Фишки Vista/Win7 в Delphi (типа прогресс в панеле задач)


3-1268491941
Leon
2010-03-13 17:52
2011.12.11
Экспорт БД в формате XML


2-1314272162
И. Павел
2011-08-25 15:36
2011.12.11
Deadlock при запросе на выборку в программе без явных блокировок


4-1229239002
SCL
2008-12-14 10:16
2011.12.11
Как запустить процесс с привилегиями System


15-1313526604
Юрий
2011-08-17 00:30
2011.12.11
С днем рождения ! 17 августа 2011 среда