Брось, попробуй и поймай (обработка исключений) 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