powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / не срабатывает catch(...)
7 сообщений из 7, страница 1 из 1
не срабатывает catch(...)
    #34625733
Фотография (`yka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VS2005
C++
При вызове sprintf_s рузультирующий размер строки превышает размер, указанный в функции в качестве максимального. В итоге исключение валит программу, а блок catch(...) не срабатывает.
Картина одинакова и с опцией /EHa, и с /EHsc.
Спрашивается - какого?!


─────────
∙ Иногда решительный шаг вперед - результат хорошего пинка сзади ∙
...
Рейтинг: 0 / 0
не срабатывает catch(...)
    #34625869
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык она вроде должна -1 вернуть + errno. Это же СRT?какой такой exception
...
Рейтинг: 0 / 0
не срабатывает catch(...)
    #34625957
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да это скорее всего не эксепшн, а аксесс виолешн, со всеми вытекающими... естественно он валит программу! что удивительного-то?
...
Рейтинг: 0 / 0
не срабатывает catch(...)
    #34626099
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorych пишет:
> Да это скорее всего не эксепшн, а аксесс виолешн, со всеми
> вытекающими... естественно он валит программу!

Access violation это тоже SEH exception. При этом он
должен ловиться в catch(...), при условии что при компиляции
указывается ключ /EHa (использовать асинхронную модель эксепшинов).

Только вот вопрос в чем - выбрасывается SEH в CRT, а где
из него формируется C++ exception - не понятно. В общем
может так быть, что для того , чтобы оно ловилось, вам надо
будет перекомпилировать CRT с /EHa.

Но что-то на практике я ловил всегда все SEH на три точки
без каких-то проблем, использовалась CRT .DLL.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
не срабатывает catch(...)
    #34626145
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv wrote:

> Access violation это тоже SEH exception. При этом он
> должен ловиться в catch(...), при условии что при компиляции
> указывается ключ /EHa (использовать асинхронную модель эксепшинов).
Насколько помню, для отлова AccessViolation через catch в MSVC нужно было
установить _set_se_handlers в которой надо было сделать std::exception из
системного исключения. Иначе AccessViolation не ловился. Ну и плюс к тому
же, если не ошибаюсь, модель исключений C++ предназначена для отлова
программных исключений, а не системных. Для них были расширения __try
__finally и т.д.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
не срабатывает catch(...)
    #34626284
Фотография (`yka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо.
Нашел информацию:
MSDNMost of the security-enhanced CRT functions and many of the preexisting functions validate their parameters. This could include checking pointers for NULL, checking that integers fall into a valid range, or checking that enumeration values are valid. When an invalid parameter is found, the invalid parameter handler is executed.

Invalid Parameter Handler Routine
The behavior of the C Runtime when an invalid parameter is found is to call the currently assigned invalid parameter handler. The default invalid parameter handler raises an Access Violation exception, which normally makes continued execution impossible. In Debug mode, an assertion is also raised...


─────────
∙ Иногда решительный шаг вперед - результат хорошего пинка сзади ∙
...
Рейтинг: 0 / 0
не срабатывает catch(...)
    #34626640
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV пишет:
> системного исключения. Иначе AccessViolation не ловился. Ну и плюс к тому
> же, если не ошибаюсь, модель исключений C++ предназначена для отлова
> программных исключений, а не системных. Для них были расширения __try
> __finally и т.д.

Все верно, но только MS-овский C++ ный компилятор имеет специальную фичу,
которая мапирует исключения SEH на исключения C++. При этом исключение SEH
ловится как обычное исключение C++. Не знаю, какого оно получается типа,
и есть ли возможность хоть какой-то обработки исключений таким образом,
в смысле, хотя бы узнать тип его, но по catch ... оно замечательно отлавливается.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / не срабатывает catch(...)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]