
Сообщение от
Владислаучык
Вопросы: Почему тут катч не работает, с throw тоже не перехватывается, и ещё подскажите плз, функцию возвращающую индекс элемента, есть ли она, и как вообще вывести индекс приведший к сбою
С.Прата Язык программирования С++ - там в теме исключений есть как раз [].
Начнём с того, что у вас исключения не вызывается, точнее вызывается что-то типа index_error - производный объект от базового expection.
вот здесь, надо вызывать как раз объект, по которому генерируется исключение
C++ |
1
| [quote="Владислаучык;5786180"]catch(int [])[/quote] |
|
т.е. к примеру catch(index_error &obj)
в теле обработки исключения, надо описать его т.е. к примеру выглядеть это будет так:
C++ |
1
2
3
4
5
| catch(index_error &obj) // передаем объект типа index_error по ссылке
{
cout<<"Error! The index of array is not range!";
// тут можно завершить программу exit'ом или продолжить, что угодно
} |
|
само прерывание тоже надо генерировать, т.е. к примеру есть функция getArray - которая возвращает i элемент, тогда
C++ |
1
2
3
4
5
6
| int getArray(int* m, int i)
{
if (i<0 || i> a) // a - предел массива
throw index_error;
return m[i];
} |
|
я настоятельно рекомендую заглянуть в Прата т.к. там это точно есть, я же могу что-то сказать не так ибо сам не так давно только читал про исключения
кстати вы по идее можете перехватывать исключения базовым expecition