Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
1 / 1 / 0
Регистрация: 13.08.2017
Сообщений: 30
1

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

02.05.2019, 17:44. Просмотров 1263. Ответов 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
3983 / 2250 / 936
Регистрация: 07.02.2019
Сообщений: 5,898
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
16971 / 9852 / 1897
Регистрация: 27.09.2012
Сообщений: 24,429
Записей в блоге: 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® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.