我正在使用CreateFile()来打开和读取文件。如果抛出异常将关闭文件,或者我是否需要捕获它并自己关闭文件。如果后者是真的,捕获和关闭文件的最佳方法是什么。 谢谢!
答案 0 :(得分:1)
该文件不会被关闭。如果您想确保它已关闭,可以使用自定义删除器将其包装在unique_ptr
中,如下所示:
struct HandleDeleter
{
void operator ()(HANDLE hObject) { CloseHandle(hObject); }
};
using SafeHandle = std::unique_ptr<HANDLE, HandleDeleter>; // for convenience
void someFunction()
{
// automatically closed at the end of parent scope:
SafeHandle hFile(CreateFile(...));
throw std::runtime_error("the file will be closed now");
}