Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];

Вниз

try finally end не срабатывает   Найти похожие ветки 

 
tariel   (2003-09-04 15:18) [0]

Когда запускаю компиленную прогу постоянно выходит сообщение об ошибке, хотя там стоит try finally end

код примерно такой

try

...
if что-то неправильно then raise Exception.Create("My text");
...

finally
что-то.Free;
end;

при выполнении выкидывает сообщение об ошибке и "My text". Может это где то в параметрах проекта что-то не то указано, хотя все по умолчанию стоит. Раньше работало нормально, без сообщений, но мне надо было поменять кое-что и вот такая фигня после этого пошла. Может сталкивался кто, если поможете скажу вам большое спасибо


 
Reindeer Moss Eater   (2003-09-04 15:19) [1]

Так и должно быть


 
Palladin   (2003-09-04 15:20) [2]

Или запускай скомпилированный файл отдельно от среды или убери галочку Stop on delphi exceptions


 
Reindeer Moss Eater   (2003-09-04 15:20) [3]

Когда запускаю компиленную прогу постоянно выходит сообщение об ошибке, хотя там стоит try finally end

try finally end - это не подавитель сообщений об ошибках. Это еда из другой сказки.


 
ZEE   (2003-09-04 15:21) [4]

try
...
что-то неправильно
...
finally
что-то.Free;
end;

делай так, зачем тебе о неправильностях твоей проги всем рассказывать? :)


 
Reindeer Moss Eater   (2003-09-04 15:24) [5]

Или запускай скомпилированный файл отдельно от среды или убери галочку Stop on delphi exceptions

А чем это поможет?


 
malkolinge   (2003-09-04 15:32) [6]

Как было сказано выше - тре финалли - не подавляет ексепшн, более того даже и не дает возможности его обработать. Это просто способ защиты кода. код между finalle end обрабатываеться всегда, в независимости от того, была исключительная ситуация или нет. побробуй
Try
Except
end


 
y-soft   (2003-09-04 15:42) [7]

Еще лучше:

try
except
On E: Exception do
end;


 
tariel   (2003-09-05 06:33) [8]

Спасибо :) я поменял на except, ошибки перестали выскакивать. Не знал что finally способно на такое


 
KSergey   (2003-09-05 07:20) [9]

Оно не просто способно на такое, оно для этого и предназначено.
Только вот вопрос:
а) если не нужно сообщение об ошибке - зачем ты сам же его и геренируешь?? (if что-то неправильно then raise Exception.Create("My text"))

б) более того, зачем ты его генерируешь, а потом в Except давишь??!! Это уже совсем странно. Может его тогда не генерировать?

в) не забывай, что блок except выполняется только в случае возниктовения исключения, а значит так писать нельзя:

что-то.Create(..);
try
...
except
что-то.Free;
end;

В этом случае объект уничтожится только в случае возниктовения исключения, если все нормально - до Free дело не дойдет.


 
y-soft   (2003-09-05 07:24) [10]

>tariel (05.09.03 06:33) [8]

Все же простое подавление исключения не есть хорошо, обязательно надо обрабатывать (освобождать ресурсы и.т.д.), а в тяжелых случаях выводить сообщение/производить запись в системный журнал и завершать программу...

Так что еще лучше:

try
try
except
On E:Exception do
begin
...
//Если исключение невозможно корректно обработать, то
//передать его дальше по цепочке...
raise;
...
end;
end;
finally
...
end;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.011 c
14-58919
Vlad Oshin
2003-08-28 10:29
2003.09.18
опытные программисты произведут отправку Вашего письма


8-58795
xman
2003-05-14 12:04
2003.09.18
Jpeg


4-58962
VKSam
2003-07-18 19:29
2003.09.18
GetKeyboardLayoutName


7-58924
Niko4543
2003-07-07 22:37
2003.09.18
AVP


1-58747
pirat
2003-09-06 10:34
2003.09.18
Глюк TLabel и TCheckBox на прозрачной форме :(





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