Главная страница
    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.004 c
15-1313675656
Andy BitOff
2011-08-18 17:54
2011.12.11
Протокол обмена с весами CAS AD-25


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


1-1276837690
Kukolev
2010-06-18 09:08
2011.12.11
Кнопки на панели задач


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


4-1252831818
Игорь
2009-09-13 12:50
2011.12.11
WinPerf





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский