Итак, рассмотрим этот код со встроенной концепцией 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) {
}
}