Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.003 c
15-1314088885
xayam
2011-08-23 12:41
2011.12.11
Переключатель на светильник


15-1313675656
Andy BitOff
2011-08-18 17:54
2011.12.11
Протокол обмена с весами CAS AD-25


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


15-1313578231
adigozelov
2011-08-17 14:50
2011.12.11
Delphi write and read to svn


15-1314028401
Медвежонок Пятачок
2011-08-22 19:53
2011.12.11
Райт-ту-Лефт письменность





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский