You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 13:15:57