![]() |
|
|
![]()
|
|
| Albor |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 7 Всего: 9 |
Имеется такой код в OnInitDialog:
при отладке программы механизм работает правильно, но в релизе - полностью игнорируется (в блок catch программа не попадает) и в случае, например отсутствия файла, происходит авария с предложением отправить сообщение об ошибке в MS (нафига только им это надо Что можете сказать по этому поводу? PS Только просьба - не критикуйте устаревший ODBC. |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 6 Всего: 50 |
А так?
Это сообщение отредактировал(а) Alca - 1.5.2009, 11:04 |
|||
|
||||
| Albor |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 7 Всего: 9 |
||||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 2 Всего: 36 |
попробуй использовать seh translator, может дело вообще не в c++ исключениях
|
|||
|
||||
| Albor |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 7 Всего: 9 |
Riffi, просветите пожалуйста, я не знаю что это такое. ---------------Добавлено--------------------------------------------- Кое что нашёл, правда всё на английском. Оказывается это довольно частое явление, и, насколько я понял, связано с оптимизацией, которую осуществляет компилятор. Но всё равно, если кто-то пояснит по-русски, буду благодарен. ----------------Ещё----------------------------- В общем, пока пришёл к выводу о том, что не следует производить какие-либо действия, способные вызвать исключение в функции OnInitDialog. Буду считать вопрос решённым, так как нашёл информацию к размышлению и требующую изучения и экспериментов. Спасибо откликнувшимся и неравнодушным! Это сообщение отредактировал(а) Albor - 2.5.2009, 20:56 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Вообще-то странное поведение. Уж на исключения-то всегда можно положиться. Сколько живу...
Кoд-то доступен? Попробуй пройти по шагам OpenEx (в дебаге, конечно) так проще проследить цепочку вызовов, чем по коду лазить. Посмотри, какое исключение и где возбуждается... Очень плохо, что перехватчик у тебя принимает копию объекта; лучше ссылку или указатель. Кстати, если это MFC, то MFC-исключения обычно возбуждаются по указателю... -------------------- ... |
|||
|
||||
| Albor |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 7 Всего: 9 |
Earnest, там без разницы как я передаю объект исключения. Я "провоцирую" CDBException, изменяя имя подключаемого файла. Если вы обратили внимание, то в коде у меня закомментирован блок TRY/CATCH, который описывается в MSDN. Проходить в Debag-e нет смысла, потому что в этом режиме исключение ловится как положено (они как положено ловятся и в других функциях программы не зависимо от варианта компиляции), а вот в Release не хочет, причем я пробовал другие исключения (деление на ноль, конечно не лучший способ проверки, лучше бы было попробовать с нулевым указателем), результат тот же. Может это проблемы 6й студии, просто сейчас не хватает времени на эксперименты.
Испытайте такой код. Вы будете удивлены. В 6й студии это срабатывает в Debug-е, а в 2008й не срабатывает вообще.
Я погуглил на счёт, просмотрел несколько статей, и понял, что не всё так гладко в этом "королевстве". В статьях (кстати упоминается 6я студия и CDBException) рекомендуются кое-какие способы решения таких проблем, но я сходу не "въехал" в смысл предлагаемого ( статьи на английском, а мне, чтобы разобрать что там написано, нужно потратить немало времени, будет время почитаю). Это сообщение отредактировал(а) Albor - 5.5.2009, 06:28 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |