Вниз
Скачать: CL | DM;

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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.003 c
4-1268922249
Nilm
2010-03-18 17:24
2014.03.09
Запуск процесса с пониженными привилегиями


15-1379938681
bondpant
2013-09-23 16:18
2014.03.09
Клавишные алгоритмы,- новая технология программирования


2-1368266298
Ponchik
2013-05-11 13:58
2014.03.09
Исходник игры "тир" для Image..


15-1378477682
картман
2013-09-06 18:28
2014.03.09
ноут


15-1379206986
Кто б сомневался
2013-09-15 05:03
2014.03.09
WPF - WTF? Не смог найти сайт на wpf




   Наверх