![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Exception или нет в finally
Дмитрий С © (2013-05-19 04:14:00)Можно как-нибудь узнать выполнение внутрь finally...end; попало в результате исключения или в результате штатного выхода из области try...finally?
И желательно получить ссылку на это исключение.
try except внутри try finally не хочется городить.
Германн (2013-05-21 02:17:00) [1]
> Rouse_ © (20.05.13 19:55) [13]
>
> Иcключения в Delphi крайне куцие (зарезаны по самое не балуйся).
>
Большинству и этого достаточно.
Rouse_ (2013-05-20 19:55:00) [2]Иcключения в Delphi крайне куцие (зарезаны по самое не балуйся).
Об этом я много раз говорил, что здесь:
http://www.delphimaster.net/view/4-1256386078
Что здесь:
http://alexander-bagel.blogspot.ru/2012/11/debuger-3.html
(function _except_handler)
Dimka Maslov (2013-05-20 19:48:00) [3]
> 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 действительно ничтяк.
clickmaker (2013-05-19 22:53:00) [4]> [10] Dimka Maslov © (19.05.13 22:12)
в finally в любом случае будет все ничтяк
Dimka Maslov (2013-05-19 22:12:00) [5]if not Assigned(ExceptObject) then ShowMessage('Всё ничтяк!')
else ShowMessage('Всё, кердык!')
Inovet (2013-05-19 15:00:00) [6]> [6] Дмитрий С © (19.05.13 13:56)
> Жаль что exception достать не удастся.
Можно в exept сохранить и снова поднять.
Дмитрий С (2013-05-19 14:30:00) [7]
> System.AcquireExceptionObject
внутри блока finally эта функция не работает как ожидается.
> Вместе с тем, try-except-end - самое правильное решение
Да понимаю ))
Exception (2013-05-19 14:27:00) [8]> Жаль что exception достать не удастся.
System.AcquireExceptionObject
> try except внутри try finally не хочется городить.
Вместе с тем, try-except-end - самое правильное решение, для того, собственно, и предназначенное. А флажки, особенно в данном случае, как раз далеко не самое лучшее решение.
Дмитрий С (2013-05-19 13:56:00) [9]
> clickmaker © (19.05.13 11:22) [3]
Хороший вариант. Жаль что exception достать не удастся.
clickmaker (2013-05-19 13:34:00) [10]> [4] Exception (19.05.13 12:46)
> Можно как-нибудь узнать выполнение внутрь finally...end
Exception (2013-05-19 12:46:00) [11]> clickmaker © (19.05.13 11:22) [3]
try
...
ShowMessage('No exception raised.');
finally
...
end;
clickmaker (2013-05-19 11:22:00) [12]> попало в результате исключения или в результате штатного
> выхода
try
...
allDone := true;
finally
if not allDone then ShowMessage('Some exception raised.');
end;
Дмитрий С (2013-05-19 04:57:00) [13]Похоже действительно придется. Предварительные эксперименты не дали никаких результатов.
Германн (2013-05-19 04:41:00) [14]
> try except внутри try finally не хочется городить.
А придётся! Не надо экономить на копейках!
Тем более что эти два блока весьма отличаются по своей сути.
Первый занимается обработкой исключений и ему абсолютно пофигу что дальше происходит с памятью. Второго интересует только память и ему плевать на все те исключения, которые могли возникнуть.