C ++ NOVICE. Wierd Grader попытка исключения ловить ??? Как успокоить Грейдер? - PullRequest
0 голосов
/ 30 июня 2018

Я занимаюсь летней практикой и застрял на этом испытании. Целью было создать простую функцию setItem (). Если функция testSetItem () работала без исключения, то задача была пройдена.

Вот код. IKK, как вызвать исключение range_error, чтобы успокоить тестовую функцию.

Когда я отправляю это, грейдер говорит:

libc ++ abi.dylib: завершается с необработанным исключением типа std :: range_error: helpme

Моя попытка:

void Vec::setItem(unsigned index, const Item &it) {
    if(index==0 || index > mySize)
        throw std::range_error("helpme");
    myArray[index] = it;
}

Код грейдера:

void VecTester::testSetItem() const {
    cout << "Testing setItem()... " << flush;
    // empty case
    Vec v0;
    try {
        v0.setItem(0, 11);
        cerr << "setItem() succeeded on empty Vec";
        exit(1);
    } catch (range_error&) {       <--------HOW DO I APPEASE THIS???
        cout << " 0 " << flush;
    }
    // nonempty case, valid subscript
    Vec v(5);
    for (unsigned i = 0; i < 5; i++) {
        v.setItem(i, i+1);
    }
    for (unsigned i = 0; i < 5; i++) {
        assert( v.myArray[i] == (i+1) );
    }
    cout << " 1 " << flush;
    // nonempty case, invalid subscript
    Vec v2(3);
    try {
        v2.setItem(3, 33);
        cerr << "setItem() succeeded beyond end of Vec";
        exit(1);
    } catch (range_error&) {
        cout << " 2 " << flush;
    }
    cout << "Passed!" << endl;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...