Кто позаботится о закрытии / блокировке файлов, если обработка исключений прекратится между ними? - PullRequest
1 голос
/ 03 мая 2020

Итак, рассмотрим этот код со встроенной концепцией RAII. Так как мы бросаем int и ловим float, программа go переходит в режим завершения и прерывает работу. В таких случаях, кто отвечает за закрытие файла и снятие блокировок файла?

#include<cstdio>
class MyFile {
  FILE* fp;
  public:
  MyFile(const char* fp);
  ~MyFile();
};

MyFile::MyFile(const char* f) {
  std::cout << "Opening the file" << std::endl;
  fp = fopen(f, "w+");
}

MyFile::~MyFile() {
  std::cout << "Closing the file" << std::endl;
  fclose(fp);
}

int main() {
  MyFile f("foo.c");
  try {
    int a = 5;
    throw a;
  } catch(float a) {
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...