Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Необработанное исключение
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
_Артём_
Что произойдёт с программой (программа написана на Delphi для Win2k/XP), если во время выполнения возникнет исключение, реакции на которое не предусмотренно? Как программа будет работать дальше?
Stanislav Sedov
Цитата(_Артём_ @ Apr 27 2007, 17:36) *
Что произойдёт с программой (программа написана на Delphi для Win2k/XP), если во время выполнения возникнет исключение, реакции на которое не предусмотренно? Как программа будет работать дальше?


Программа будет завершена ОС.
reddot
По идее в любом случае есть обработчик ошибок на уровне Application. Он выводит мессадж об ошибке и завершает приложение. Если каким-то образом и этот стандартный обработчик убрать (не знаю насколько это возможно, давно с дельфями не работал), думаю, что программа продолжит выполняться, но возможно окажется в зависшем состоянии. Эксепшены в дельфи - исключительно программная абстракция к ОС никакого отношения не имеющая.
_Артём_
Цитата(reddot @ May 2 2007, 22:12) *
По идее в любом случае есть обработчик ошибок на уровне Application. Он выводит мессадж об ошибке и завершает приложение. Если каким-то образом и этот стандартный обработчик убрать (не знаю насколько это возможно, давно с дельфями не работал), думаю, что программа продолжит выполняться, но возможно окажется в зависшем состоянии. Эксепшены в дельфи - исключительно программная абстракция к ОС никакого отношения не имеющая.


Насчёт автоматического завершения не уверен: много раз видел как программа выводит сообщение об ошибке и при этом продолжает работать. Но как она при этом работает? Сходит с ума или просто продолжает?
Ivan_Kov
Цитата(_Артём_ @ May 23 2007, 20:23) *
Насчёт автоматического завершения не уверен: много раз видел как программа выводит сообщение об ошибке и при этом продолжает работать. Но как она при этом работает? Сходит с ума или просто продолжает?

Это уже зависит от того что за причина вызвала exception. Если ошибка работы с памятью, то есть вероятность что нарушены какие-то данные программы, что может привести и к не корректной работе в дальнейшем, хотя в этом случае exception может и не возникнуть. Если exception возникло в обработке нажания кнопки, скажем на операторе StrToInt, то программа просто вылетит из обработчика события кнопки и продолжит свою работу.
Короче возможны самые разные варианты, от самого безобидного - выход из обработчика текущего события, до аварийного равершения приложения операционной системой.

PS Обычно приложение закрывается если происходит не обрабатываемое исключение, или коцаются какие-нить важные данные (что и приводит с не обрабатываемому исключению)
вообще есть обработчик по умолчанию, если он - не справляется, тогда - все, хана приложению
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.