Форум: "Начинающим";
Текущий архив: 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