gpt4 book ai didi

C - Windows 异常处理程序无效句柄

转载 作者:行者123 更新时间:2023-11-30 18:39:11 25 4
gpt4 key购买 nike

我在管理异常方面遇到问题。在我的代码中,我输入 hIn = INVALID_HANDLE_VALUE 来测试异常,“null”是一个不存在的文件。我的一段代码是

__try
{
hIn = CreateFile (_T("null"), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
hIn = INVALID_HANDLE_VALUE;
ReadFile (hIn, buffer, BUF_SIZE*sizeof(DWORD), &nIn, NULL);
}
__except(GetExceptionCode() == EXCEPTION_INVALID_HANDLE ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
{
_tprintf (_T("-> Error OPENING FILE <-\n"));
return -1;
}

我不明白为什么它没有捕获异常。问题是什么?预先感谢您

最佳答案

永远不会进入 __ except block ,因为 ReadFile 不会引发异常。

请记住,Windows API 与编程语言无关,并且需要提供一个可由任何编程语言使用的接口(interface)。并非所有语言都支持异常,甚至那些使用不同机制的语言也是如此。因此,对于像 Windows API 这样的 API,抛出异常根本不是一个选项。

您问题中的两个 API 调用都通过其返回值指示错误。您需要检查这些返回值并采取相应的措施。并非所有函数都以相同的方式报告错误,因此您需要密切关注您调用的每个 API 函数的文档。

关于C - Windows 异常处理程序无效句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30666952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com