This Program Has Caused a Fatal Exception при закрытии
От: retiv  
Дата: 15.09.02 09:12
Оценка:
Привет!
Большое MDI приложение на VB6 (более сорока ActiveX Control и ActiveX DLL проектов; так же используются следующие контролы других разработчиков: EasyScroll, Janus GridEX 2000, MDI ActiveX).
На компьютере установлено: Windows 2000 sp2, VB6 sp5.
С помощью Wise Install Master делается инсталляционная версия программы и устанавливается на другой "чистый" (только Windows, больше ничего) компьютер.
Некоторое время работаем в программе (тестируем) и затем закрываем ее. После того как зарываются все окна программы получаем сообщение: "This Program Has Caused a Fatal Exception : and Will Be Terminated"
Попытался разобраться с этой ошибкой. Принудительно перед закрытием MDIForm закрываю все другие окна, закрываю все соединения с СУБД, уничтожаю все объекты (set object = nothing). Переопределяю событие главной (MDI form) формы:

Private Sub MDIForm_Terminate()
DestroyObjects
MsgBox "Пока все нормально"
End
End Sub

Так вот при закрытии программы сначала получаю сообщение "Пока все нормально", а затем "This Program Has Caused a Fatal Exception : and Will Be Terminated". Т.е. ошибка возникает, когда уже весь мой код на VB выполнен.

Так же пробовал следующее в одной из форм поместил кнопку Command1 и переопределил событие Command1_Click
Private Sub Command1_Click()
End
End Sub
Если немного поработать в программе и затем нажать на кнопку получаю все тоже сообщение о Fatal Exception.

Ошибка не возникает под VB IDE. Часто возникает под Windows 9x и Windows2000. Очень редко возникает под Windows NT 4.

Внимание, вопрос: как сделать так чтобы это сообщение об ошибке не появлялось?
Хорошо, если кто укажет на причину ее возникновения и способ(ы) устранения.
Но подойдет так же совет как избавиться от окна с сообщением "This Program Has Caused a Fatal Exception : and Will Be Terminated". Ведь программа все равно уже закрыта пользователем, весь мой код выполнен и нам с пользователем от операционной системы уже ничего не нужно. А сообщение "на посошок" раздражает.

Спасибо
Re: This Program Has Caused a Fatal Exception при закрытии
От: TK Лес кывт.рф
Дата: 15.09.02 09:20
Оценка:
Здравствуйте retiv, Вы писали:

R>Привет!

R>Большое MDI приложение на VB6 (более сорока ActiveX Control и ActiveX DLL проектов; так же используются следующие контролы других разработчиков: EasyScroll, Janus GridEX 2000, MDI ActiveX).

R>Внимание, вопрос: как сделать так чтобы это сообщение об ошибке не появлялось?


А кто выводит сообщение о данной ошибке?

R>Хорошо, если кто укажет на причину ее возникновения и способ(ы) устранения.


R>Но подойдет так же совет как избавиться от окна с сообщением "This Program Has Caused a Fatal Exception : and Will Be Terminated". Ведь программа все равно уже закрыта пользователем, весь мой код выполнен и нам с пользователем от операционной системы уже ничего не нужно. А сообщение "на посошок" раздражает.


Если этим занимается Windows, то его заткнет вызов WinAPI функции SetErrorMode
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: This Program Has Caused a Fatal Exception при закрытии
От: Vi2 Удмуртия http://www.adem.ru
Дата: 16.09.02 04:59
Оценка:
Здравствуйте retiv, Вы писали:

[skipped]

R>Внимание, вопрос: как сделать так чтобы это сообщение об ошибке не появлялось?


Попробуй убрать оператор End, как недостойный для такого большого приложения.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re: This Program Has Caused a Fatal Exception при закрытии
От: Tom Россия http://www.RSDN.ru
Дата: 16.09.02 07:56
Оценка:
Не давно microsoft выложила новый runtime для васика.
Попробуй с ним может что то проясниться
Народная мудрось
всем все никому ничего(с).
Re[2]: This Program Has Caused a Fatal Exception при закрыти
От: retiv  
Дата: 17.09.02 06:22
Оценка: 10 (1)
Здравствуйте TK, Вы писали:


TK>Если этим занимается Windows, то его заткнет вызов WinAPI функции SetErrorMode


Спасибо, помогло SetErrorMode
Re[2]: This Program Has Caused a Fatal Exception при закрыти
От: BugMan  
Дата: 17.09.02 18:17
Оценка:
Здравствуйте Vi2, Вы писали:

Vi2>Попробуй убрать оператор End, как недостойный для такого большого приложения.


Именно он гадюка все и портит !
Уже много раз встречался с этой проблеммой.
Выход: Либо совсем забыть про End , либо выносить его за пределы _Unload или _Terminate, т.е. вызывать по таймеру отдельно от уничтожения формы.
Re[3]: This Program Has Caused a Fatal Exception при закрыти
От: retiv  
Дата: 18.09.02 14:06
Оценка:
Здравствуйте BugMan, Вы писали:

Vi2>>Попробуй убрать оператор End, как недостойный для такого большого приложения.


BM>Именно он гадюка все и портит !

BM>Уже много раз встречался с этой проблеммой.
BM>Выход: Либо совсем забыть про End , либо выносить его за пределы _Unload или _Terminate, т.е. вызывать по таймеру отдельно от уничтожения формы.

Оператор End оказался там во время моих попыток решить эту проблему. Забыл убрать. Программа падала и до него
Re[4]: This Program Has Caused a Fatal Exception при закрыти
От: Vi2 Удмуртия http://www.adem.ru
Дата: 18.09.02 14:14
Оценка:
Здравствуйте retiv, Вы писали:

R>Оператор End оказался там во время моих попыток решить эту проблему. Забыл убрать. Программа падала и до него


Ну тогда тебе нужно разбираться что к чему, для твоей же пользы. Как правило, программа на VB достаточно корректно выходит. А просто "затыкание" сообщения заталкивает проблему вглубь, не решая проблемы.

Помочь сам не могу, потому как не имею твоих прибамбасов в виде EasyScroll, Janus GridEX 2000, MDI ActiveX

Протестируй эти штучки отдельно, постепенно наращивая функциональность. Сомнения вызывает и сама функция DestroyObjects. Возможно это и полезная штучка, но уж больно грозно называется.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re: This Program Has Caused a Fatal Exception при закрытии
От: Chorkov Россия  
Дата: 19.09.02 07:31
Оценка:
Здравствуйте retiv, Вы писали:

R>Привет!

R>Большое MDI приложение на VB6 (более сорока ActiveX Control и ActiveX DLL проектов; так же используются следующие контролы других разработчиков: EasyScroll, Janus GridEX 2000, MDI ActiveX).
R>На компьютере установлено: Windows 2000 sp2, VB6 sp5.
R>С помощью Wise Install Master делается инсталляционная версия программы и устанавливается на другой "чистый" (только Windows, больше ничего) компьютер.
R>Некоторое время работаем в программе (тестируем) и затем закрываем ее. После того как зарываются все окна программы получаем сообщение: "This Program Has Caused a Fatal Exception : and Will Be Terminated"

R> ...


R>Спасибо


Была похожая ошибка при использовании в проект элемента управления GTTabCtl (изготовитель GreenTree). Исправили ошибку заменой элемента управления на его аналог от Майкрософта.

Возможно, в вашем случае все портит, какой-то другой элемент управления ...
Для выявления виновника мы воспользовались отладчиком VC: на чистую машину устанавливается студия в минимальной конфигурации (по сути только среда VC++), запускаем приложение, подключаем отладчик, для всех типов исключений, устанавливаем флаги "Stop if not handled".
В момент появления необработанного исключения, просматриваем стек вызовов, ... Виновным, наверняка, является один из модулей упомянутых в стеке, хотя не обязательно верхний.
Re[5]: This Program Has Caused a Fatal Exception при закрыти
От: BugMan  
Дата: 19.09.02 17:23
Оценка:
Здравствуйте Vi2, Вы писали:

>Как правило, программа на VB достаточно корректно выходит.

Грязная клевета !!!
Мой опыт именно в этом вотросе достаточно велик. Как и предлагалось кем то здесь я тоже по началу пытался заткнуть собссно сообщение об ошибке, и мне это удалось.... почти.... пока не попробовал на XP......

Т.е. если прога валится и без End , по понятное дело это не он виноват, а кто то из "друзей" лежащих на форме. Но вот если вызывать End на анлоаде последней формы (особенно если на ней всякой фигни понавешанно) , то это Fatal Exeption воникает почти в 100% случаев. Хуки там какието не закрываются или что — хер его знает......
Re[6]: This Program Has Caused a Fatal Exception при закрыти
От: Vi2 Удмуртия http://www.adem.ru
Дата: 20.09.02 06:25
Оценка:
Здравствуйте BugMan, Вы писали:

Vi2>Как правило, программа на VB достаточно корректно выходит.

BM>Грязная клевета !!!

Я может зря недописАл выражение "выходит и без оператора END", ясное из контекста, чем, наверное, и вызвал такой всплеск эмоций.

BM>Т.е. если прога валится и без End , по понятное дело это не он виноват, а кто то из "друзей" лежащих на форме.

BM>Но вот если вызывать End на анлоаде последней формы (особенно если на ней всякой фигни понавешанно) , то это Fatal Exeption воникает почти в 100% случаев. Хуки там какието не закрываются или что — хер его знает......

И даже в последнем случае VB не виноват. Как контейнер, он пытается сделать то, что ты его заставляешь — аварийно завершиться, уже не заботясь о каких-либо приличиях. И если VB не обрубает просто-напросто твоё приложение, как это сделал бы Task Manager, а пытается ещё что-то сделать корректное на выходе, освобождая определённые ресурсы, то Fatal Exception — это ещё меньшее из зол, возможных при аварийном выходе из программы.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[7]: This Program Has Caused a Fatal Exception при закрыти
От: BugMan  
Дата: 20.09.02 14:32
Оценка:
Здравствуйте Vi2, Вы писали:

>VB достаточно корректно выходит ... выходит и без оператора END

ммммммм...... Тоже не совсем правда......

[skip]
>Your program closes as soon as there are no other programs holding references to objects created from your public class modules and no code executing
Ну с классами и формами то я думаю всё понятно, а вот в "no code executing" кроется гаденькая подковырка......

ЗЫ: Пожалуйста не надо записывать меня в рады тех кто всё время кричит типа "MS (VB) SUXXX" и т.д. VB — прекраснейший тул для штамповки интерфейсов, но в данном случае проблемма налицо
Re: This Program Has Caused a Fatal Exception при закрытии
От: Costja  
Дата: 24.02.03 11:20
Оценка:
Здравствуйте, retiv!
А у меня в одной из программ на VB3 Windows ругает VB за выполнение строки "End Sub".

С наилучшими пожеланиями, Costja. E-mail: tarasovcostja_2000#hotbox.ru
Posted via RSDN NNTP Server 1.4.6 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.