Win32 CopyFile(W)函数是否曾抛出SEH异常?
关于CopyFile函数异常捕获的旧代码疑问
Windows API的CopyFile函数用法相当直观:
BOOL CopyFileW( [in] LPCWSTR lpExistingFileName, [in] LPCWSTR lpNewFileName, [in] BOOL bFailIfExists );...
函数执行失败时返回值为0,若需获取详细错误信息,可调用GetLastError。
但我在公司的C++源码中发现一段2006年10月的旧代码:
try { //若目标文件已存在且受写保护,会抛出异常 bCopyOK = CopyFile(csSourceFile, csDestinationFile, bFailIfExists); } catch (...) { bCopyOK = FALSE; }
我还找到了当时的工单标题(无详情):"当目标文件受写保护时,CopyFile函数会抛出异常,需捕获异常" :-)
我们至今仍使用/EHa编译选项,该选项可捕获所有SEH异常。
当时我们使用的是Windows XP系统搭配Visual Studio 6,这个环境有不少特殊特性,但我还是很难理解为什么这个函数会抛出异常(除了无效/空参数这类情况之外)。
内容的提问来源于stack exchange,提问作者Martin Ba
相关产品推荐
相关产品推荐

