|
|
|
не срабатывает catch(...)
|
|||
|---|---|---|---|
|
#18+
VS2005 C++ При вызове sprintf_s рузультирующий размер строки превышает размер, указанный в функции в качестве максимального. В итоге исключение валит программу, а блок catch(...) не срабатывает. Картина одинакова и с опцией /EHa, и с /EHsc. Спрашивается - какого?! ───────── ∙ Иногда решительный шаг вперед - результат хорошего пинка сзади ∙ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 12:11 |
|
||
|
не срабатывает catch(...)
|
|||
|---|---|---|---|
|
#18+
Дык она вроде должна -1 вернуть + errno. Это же СRT?какой такой exception ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 12:49 |
|
||
|
не срабатывает catch(...)
|
|||
|---|---|---|---|
|
#18+
Да это скорее всего не эксепшн, а аксесс виолешн, со всеми вытекающими... естественно он валит программу! что удивительного-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 13:22 |
|
||
|
не срабатывает catch(...)
|
|||
|---|---|---|---|
|
#18+
egorych пишет: > Да это скорее всего не эксепшн, а аксесс виолешн, со всеми > вытекающими... естественно он валит программу! Access violation это тоже SEH exception. При этом он должен ловиться в catch(...), при условии что при компиляции указывается ключ /EHa (использовать асинхронную модель эксепшинов). Только вот вопрос в чем - выбрасывается SEH в CRT, а где из него формируется C++ exception - не понятно. В общем может так быть, что для того , чтобы оно ловилось, вам надо будет перекомпилировать CRT с /EHa. Но что-то на практике я ловил всегда все SEH на три точки без каких-то проблем, использовалась CRT .DLL. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 14:04 |
|
||
|
не срабатывает catch(...)
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 14:13 |
|
||
|
не срабатывает catch(...)
|
|||
|---|---|---|---|
|
#18+
Всем спасибо. Нашел информацию: 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... ───────── ∙ Иногда решительный шаг вперед - результат хорошего пинка сзади ∙ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 14:49 |
|
||
|
не срабатывает catch(...)
|
|||
|---|---|---|---|
|
#18+
ErV пишет: > системного исключения. Иначе AccessViolation не ловился. Ну и плюс к тому > же, если не ошибаюсь, модель исключений C++ предназначена для отлова > программных исключений, а не системных. Для них были расширения __try > __finally и т.д. Все верно, но только MS-овский C++ ный компилятор имеет специальную фичу, которая мапирует исключения SEH на исключения C++. При этом исключение SEH ловится как обычное исключение C++. Не знаю, какого оно получается типа, и есть ли возможность хоть какой-то обработки исключений таким образом, в смысле, хотя бы узнать тип его, но по catch ... оно замечательно отлавливается. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 16:22 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34625733&tid=2028590]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
169ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 491ms |

| 0 / 0 |
