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

Вниз

Exception или нет в finally   Найти похожие ветки 

 
Дмитрий С ©   (2013-05-19 04:14) [0]

Можно как-нибудь узнать выполнение внутрь finally...end; попало в результате исключения или в результате штатного выхода из области try...finally?
И желательно получить ссылку на это исключение.
try except внутри try finally не хочется городить.


 
Германн ©   (2013-05-19 04:41) [1]


> try except внутри try finally не хочется городить.

А придётся! Не надо экономить на копейках!
Тем более что эти два блока весьма отличаются по своей сути.
Первый занимается обработкой исключений и ему абсолютно пофигу что дальше происходит с памятью. Второго интересует только память и ему плевать на все те исключения, которые могли возникнуть.


 
Дмитрий С ©   (2013-05-19 04:57) [2]

Похоже действительно придется. Предварительные эксперименты не дали никаких результатов.


 
clickmaker ©   (2013-05-19 11:22) [3]

> попало в результате исключения или в результате штатного
> выхода

try
 ...
 allDone := true;
finally
 if not allDone then ShowMessage("Some exception raised.");
end;


 
Exception   (2013-05-19 12:46) [4]

> clickmaker ©   (19.05.13 11:22) [3]


try
 ...
 ShowMessage("No exception raised.");
finally
 ...
end;


 
clickmaker ©   (2013-05-19 13:34) [5]

> [4] Exception   (19.05.13 12:46)


> Можно как-нибудь узнать выполнение внутрь finally...end


 
Дмитрий С ©   (2013-05-19 13:56) [6]


> clickmaker ©   (19.05.13 11:22) [3]

Хороший вариант. Жаль что exception достать не удастся.


 
Exception   (2013-05-19 14:27) [7]

> Жаль что exception достать не удастся.

System.AcquireExceptionObject

> try except внутри try finally не хочется городить.

Вместе с тем, try-except-end - самое правильное решение, для того, собственно, и предназначенное. А флажки, особенно в данном случае, как раз далеко не самое лучшее решение.


 
Дмитрий С ©   (2013-05-19 14:30) [8]


> System.AcquireExceptionObject

внутри блока finally эта функция не работает как ожидается.


> Вместе с тем, try-except-end - самое правильное решение

Да понимаю ))


 
Inovet ©   (2013-05-19 15:00) [9]

> [6] Дмитрий С ©   (19.05.13 13:56)
> Жаль что exception достать не удастся.

Можно в exept сохранить и снова поднять.


 
Dimka Maslov ©   (2013-05-19 22:12) [10]

if not Assigned(ExceptObject) then ShowMessage("Всё ничтяк!")
 else ShowMessage("Всё, кердык!")


 
clickmaker ©   (2013-05-19 22:53) [11]

> [10] Dimka Maslov ©   (19.05.13 22:12)

в finally в любом случае будет все ничтяк


 
Dimka Maslov ©   (2013-05-20 19:48) [12]


>  clickmaker ©   (19.05.13 22:53) [11]


procedure TForm5.Button1Click(Sender: TObject);
begin
 try
   Abort;
 finally
   if ExceptObject <> nil then ShowMessage("Всё, кердык")
     else ShowMessage("Всё ничтяк");
 end;
end;


В Delphi 2009 таки кердык, а вот в винтажной Delphi 5 действительно ничтяк.


 
Rouse_ ©   (2013-05-20 19:55) [13]

Иcключения в Delphi крайне куцие (зарезаны по самое не балуйся).
Об этом я много раз говорил, что здесь:
http://www.delphimaster.net/view/4-1256386078
Что здесь:
http://alexander-bagel.blogspot.ru/2012/11/debuger-3.html
(function _except_handler)


 
Германн ©   (2013-05-21 02:17) [14]


> Rouse_ ©   (20.05.13 19:55) [13]
>
> Иcключения в Delphi крайне куцие (зарезаны по самое не балуйся).
>

Большинству и этого достаточно.



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

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

Наверх





Память: 0.47 MB
Время: 0.002 c
6-1271163307
pvr
2010-04-13 16:55
2014.03.09
IdHTTP + SSL


6-1268160390
demon
2010-03-09 21:46
2014.03.09
Авторизация на light.webmoney.ru


15-1379395335
БарЛог
2013-09-17 09:22
2014.03.09
Вспомнить Советскую фантастику


15-1380227403
Юрий
2013-09-27 00:30
2014.03.09
С днем рождения ! 27 сентября 2013 пятница


15-1379501921
Els
2013-09-18 14:58
2014.03.09
Электронные отчеты





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