Брось, попробуй и поймай (обработка исключений) C++

У меня есть 2 функции в 2 разных файлах, и я пытаюсь сделать перехват от одного перенаправления на другой. Более конкретно

void test6(){
//flushing file with pages still pinned. Should generate an error
for (i = 1; i <= num; i++) {
    bufMgr->readPage(file1ptr, i, page);
}

try
{
    bufMgr->flushFile(file1ptr);
    PRINT_ERROR("ERROR :: Pages pinned for file being flushed. Exception should have been thrown before execution reaches this point.");
}
catch(PagePinnedException e)
{

}

std::cout << "Test 6 passed" << "\n";

for (i = 1; i <= num; i++)
    bufMgr->unPinPage(file1ptr, i, true);

bufMgr->flushFile(file1ptr);

} это тест, который я хочу, чтобы моя функция flushfile прошла. Я перехватываю исключение в своей функции flushFile, и она работает, но кажется, что она не перехватывает ее в test6. Моя функция flushFile

void BufMgr::flushFile(const File* file) {
/* ============== */
/* YOUR CODE HERE */
/* ============== */
try{
    for (FrameId i = 0; i < numBufs; i++){
            if (bufDescTable[i].file == file){
                if (bufDescTable[i].pinCnt > 0){
                    throw (PagePinnedException("sfsddsf",bufDescTable[i].pageNo,bufDescTable[i].frameNo));
                }

                if (bufDescTable[i].dirty == true){
                        bufDescTable[i].file->writePage(bufPool[i]);
                        hashTable->remove(file,bufDescTable[i].pageNo);
                        bufDescTable[i].Clear();
                }
    }
}
}
catch(BadBufferException){

}

Когда я запускаю его, я получаю

прекращение вызова после выброса экземпляра PagePinnedException

0 ответов

Другие вопросы по тегам