我正在使用 CreateFile() 打开和读取文件。如果抛出异常,文件将被关闭,还是我需要自己捕获并关闭文件。如果后者是真的,那么捕获和关闭文件的最佳方法是什么。谢谢!
问问题
326 次
1 回答
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");
}
于 2018-06-17T19:40:37.287 回答