![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
spumer |
![]() ![]()
Сообщение
#1
|
Студент ![]() Группа: Новичок Сообщений: 18 Регистрация: 28.3.2011 Пользователь №: 2546 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Здравствуйте.
При попытке подкинуть кривой хостнейм, программа вылетала с крит. ошибкой. Затем я начал отлавливать это исключение и пытаться завершить процесс более-менее спокойно. Но к сожалению это приводит к отказу приложения и система его закрывает.
|
|
|
Iron Bug |
![]()
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
скорее всего, у тебя resolver.resolve(query) возвращает пустой итератор, а ты его не проверяешь, да ещё и пытаешься использовать. по вполне понятным причинам программа падает.
попробуй сделать что-то типа
Сообщение отредактировал Iron Bug - 13.7.2011, 22:41 |
|
|
spumer |
![]()
Сообщение
#3
|
Студент ![]() Группа: Новичок Сообщений: 18 Регистрация: 28.3.2011 Пользователь №: 2546 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
скорее всего, у тебя resolver.resolve(query) возвращает пустой итератор, а ты его не проверяешь, да ещё и пытаешься использовать. по вполне понятным причинам программа падает. попробуй сделать что-то типа
К сожалению не помогло, попробовал даже через стандартную фишку записи ошибки:
Результат тот же. Когда идет запись ошибки в переменную, крит. вылета нет, все как при try/catch. При нормальном хосте все отлично работает ![]() |
|
|
Iron Bug |
![]()
Сообщение
#4
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
в примерах везде ловится std::exception.
(например, http://www.gamedev.net/blog/950/entry-2249...boostasio) может, у тебя просто не установлены флаги для отлова эксепшнов? под какую систему собираешь и чем? Сообщение отредактировал Iron Bug - 13.7.2011, 23:14 |
|
|
spumer |
![]()
Сообщение
#5
|
Студент ![]() Группа: Новичок Сообщений: 18 Регистрация: 28.3.2011 Пользователь №: 2546 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
в примерах везде ловится std::exception. (например, http://www.gamedev.net/blog/950/entry-2249...boostasio) может, у тебя просто не установлены флаги для отлова эксепшнов? под какую систему собираешь и чем? Windows 7. VS 2008 Express. |
|
|
Iron Bug |
![]()
Сообщение
#6
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
попробуй поставить флаг /EHsc и ловить std::exception, как в ссылке, которую я привела последней. либо /EHa и тогда заработает catch(...). в венде если флаги не стоят, она тупо ничего не делает при стандартных эксепшнах. можно поэкспериментировать с флагами эксепшнов.
прочитать про всё это барахло можно тут, например: http://msdn.microsoft.com/en-us/library/1d...5(v=vs.80).aspx Сообщение отредактировал Iron Bug - 14.7.2011, 7:40 |
|
|
spumer |
![]()
Сообщение
#7
|
Студент ![]() Группа: Новичок Сообщений: 18 Регистрация: 28.3.2011 Пользователь №: 2546 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Iron Bug, Спасибо. Буду читать материал по ссылкам. Как разберусь, отпишусь либо сюда, либо в новый топик, если этот умрет.
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#8
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
spumer |
![]()
Сообщение
#9
|
Студент ![]() Группа: Новичок Сообщений: 18 Регистрация: 28.3.2011 Пользователь №: 2546 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Iron Bug |
![]()
Сообщение
#10
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
у меня под линюксом вот такой код
работает нормально. то есть, буст выбрасывает эксепшн типа boost::system::system_error и всё отрабатывает в catch. линкуется это всё с библиотекой boost_system и обязательно с многопоточностью (в венде это флаг компилера). ещё можешь проверить, что у тебя не завалялись где-нибудь разные версии библиотек, если они называются одинаково. в венде конфликты библиотек - обычное дело. но в бусте вроде библиотеки содержат версию и это не должно быть проблемой. Сообщение отредактировал Iron Bug - 17.7.2011, 0:18 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 20.6.2025, 0:56 |