__try __кроме того, что не работает в границах массива, превышающих состояние

Я должен использовать операторы __try и __except для обработки возможной памяти errors, как показано ниже:

#include <Windows.h>
#include <Shlwapi.h>
#include <stdio.h>


INT main()
{
    CHAR a[5] = { 0 };
    // literal string
    CHAR *b = "hello12345";

    __try
    {
        StrCpyA(a, b);
    }
    __except ((GetExceptionCode() == EXCEPTION_ARRAY_BOUNDS_EXCEEDED) ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
    {
        printf("Array bounds exceeded!");
    }

    return 0;
}

Во время работы программа неожиданно останавливается с ошибкой при использовании __try и __except И в блоке __except() исключений не возникло!

Кстати, я использую Windows API typedef's

Любое предложение?


person BattleTested_закалённый в бою    schedule 08.10.2018    source источник
comment
поведение undefined не определено   -  person Stargateur    schedule 08.10.2018
comment
@Stargateur извините, я вас не понял?   -  person BattleTested_закалённый в бою    schedule 08.10.2018
comment
@Stargateur, пожалуйста, помогите мне...   -  person BattleTested_закалённый в бою    schedule 08.10.2018
comment
Добавить нечего, вы ожидаете точного поведения для чего-то, что имеет неопределенное поведение. Исключение не волшебство, не доверяйте оконному API, это не то, что вы можете сделать в C. Перейдите на C# для такой функции. Нет смысла использовать C, если вы хотите автоматическую проверку привязки.   -  person Stargateur    schedule 08.10.2018