Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.03.09;
Скачать: 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 вся ветка

Текущий архив: 2014.03.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.006 c
2-1368718620
IRS
2013-05-16 19:37
2014.03.09
Вывод трафика по каждому пользователю в график.


15-1379530093
Сергей М.
2013-09-18 22:48
2014.03.09
philips://remote?action=blabla


4-1268848506
tippa
2010-03-17 20:55
2014.03.09
uptime системы


2-1368607169
Аделина
2013-05-15 12:39
2014.03.09
Срочно нужна помочь в исправлении ошибок!


15-1379519131
Необычный порошок
2013-09-18 19:45
2014.03.09
вифи камера и роутер за так