![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Мастера - подскажите о raise ? [D5, Win2k]
Альф © (2003-02-06 15:20:00)При вызове
raise EMyException.Create("Ошибка")как я понимаю создается объект классаEMyException
а вот интересует, когда он удаляется ???
И что с ним делается при:
try???
..
raise EMyException.Create("Ошибка");
..
except
end;{}
Roma (2003-02-06 16:27:00) [1]>jack128 © (06.02.03 16:14)
В Application...
Альф (2003-02-06 16:25:00) [2]Прошу прощения - jack128© - это не я :)
2Внук © (06.02.03 16:23)
:)))
Внук (2003-02-06 16:23:00) [3]>>jack128 © (06.02.03 16:14)
Любая стандартная программа на Delphi - это один большой неявный try ... except, поэтому здесь все обработается на том или ином уровне.
А вообще необработанное исключение (если они не может быть обработано даже на уровне ядра) приводит к остановке ОС. В случае NT это всеми любимый BSOD.
Романов Р.В. (2003-02-06 16:20:00) [4]
> jack128 © (06.02.03 16:14)
> а если блока try except end вообще нет где эта исключительная
> ситуация обрабатывается?
Ну вы же видите сообщение "AV в ..." или "Деление на ноль".
ЗЫ: Если сообщения нет то все равно обрабатывается
jack128 (2003-02-06 16:14:00) [5]а если блока try except end вообще нет где эта исключительная ситуация обрабатывается?
Альф (2003-02-06 16:07:00) [6]Спасибо :)
Игорь Шевченко (2003-02-06 16:01:00) [7]Альф © (06.02.03 15:44)
> Кем удаляется ???
Обработчиком исключительной ситуации
Roma (2003-02-06 15:47:00) [8]>Альф © (06.02.03 15:20)
А вот в блокеtry...exceptэтот объект - исключение типа EMyException - и должен обработаться... А после обработки он автоматически удалится. Т.е., в данном конкретном случае вообще ничего не произойдет ;) - исключение не обрабатыватся в блоке try...except, но автоматически удалится.
А если так:
try
...
raise EMyException.Create("Ошибка!!!");
...
except
on E: EMyException do
ShowMessage(E.Message);
end; // except
то исключение типа EMyException обработается (здесь - просто выведется сообщение "Ошибка!!!") и удалится. А исключения других типов - EInOutError, EOverflow, EZeroDivide и т.д. и т.п. - будут перехвачены и обработаны не тобой, а стандартным обработчиком исключений в Application, где и удалятся...
Альф (2003-02-06 15:44:00) [9]2Mike_Goblin © (06.02.03 15:35)
А нескромный вопрос можно ?
Кем удаляется ???
Mike_Goblin (2003-02-06 15:35:00) [10]Удаляется автоматически после того как исключительная ситуация будет обработана.