Главная страница
    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.009 c
4-58974
tlwlite
2003-07-15 20:16
2003.09.18
Как загрузить bitmap (исп. только win api)


3-58594
3APA3A
2003-08-26 14:17
2003.09.18
Выбрать все записи в таблице


3-58532
MsGuns
2003-08-27 13:16
2003.09.18
QReport. Коррекция отчета перед печатью


14-58853
petr_v_a
2003-08-30 16:37
2003.09.18
Посоветуйте хороший компонент для просмотра и печати HTML


3-58577
Layner
2003-08-27 09:52
2003.09.18
Подскажите UpdateSQL для ADO Query





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