1 / 1 / 0
Регистрация: 13.08.2017
Сообщений: 30
1

Обработка исключений

02.05.2019, 17:44. Показов 1510. Ответов 3

Здравствуйте, вопрос:
В функцию передается ссылка на элемент массива, необходимо предусмотреть выход за границу массива привожу код.
Проблема в том, что у меня не получается сделать это через try, компилятор выводит сообщение
Вызвано исключение по адресу, нарушение прав доступа при чтении по адресу.
Заранее спасибо за помощь.
C++
1
2
3
4
5
6
7
8
9
10
void func1(int &a, int b = 4) {
            try
            {
                a = b;
            }
            catch (const char* msg)
            {
                cout << msg << endl;
            }
        };
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2019, 17:44
Ответы с готовыми решениями:

Обработка исключений с пмощью структурированной обработки исключений
Есть функция, которая определенным образом работает с файлами,но при работе с файлами &quot;не...

Обработка исключений
класс B является производным от абстрактного класса А. Определить обработчик исключительной...

Обработка исключений
Помогите написать программу пожалуйста!!!! Я незнаю как правильно написать!!! Задание: Для...

Обработка исключений
Как в блоке Try...Catch... обработать необработанное исключение по адресу? Что необходимо...

3
5539 / 3024 / 1262
Регистрация: 07.02.2019
Сообщений: 7,647
02.05.2019, 17:59 2
Merry Milkman, это win32 исключение(access violation), его только через API можно схватить, если я не ошибаюсь
1
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
02.05.2019, 17:59 3
Эта функция ничего не знает о массиве, он для нее просто не существует.
0
Don't worry, be happy
17769 / 10534 / 2034
Регистрация: 27.09.2012
Сообщений: 26,505
Записей в блоге: 1
02.05.2019, 21:55 4
Лучший ответ Сообщение было отмечено Merry Milkman как решение

Решение

Если речь о VC++, то Вы можете использовать __try/__except для обработки SEH.
C++
1
2
3
4
5
6
7
8
__try
{
    a = b;
}
__except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION)
{
    std::cout << "EXCEPTION_ACCESS_VIOLATION" << std::endl;
}
Однако, запись за пределы массива не обязательно приведет к access violation, возможно, просто будут переписаны какие-то другие данные.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.05.2019, 21:55
Помогаю со студенческими работами здесь

обработка исключений
Здравствуйте. В следующем коде, при запуске throw выдает ошибку &quot;Exception object adress&quot;. Не...

Обработка исключений
Нужно описать класс исключения и программу, способную генерировать и обрабатывать исключение...

Обработка исключений
Проблема. В main создаю объект класса MAS int или string. Нужно, что бы когда int - то заполнялся...

Обработка исключений
Программа должна содержать блоки try, catch, точку throw. Задание: Ввод пользователем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru