gpt4 book ai didi

c++ - close() 抛出什么异常类型?

转载 作者:太空宇宙 更新时间:2023-11-04 15:40:41 26 4
gpt4 key购买 nike

我通过 unistd.h (Linux) 中的标准 open()、read()、close() 函数使用串行端口访问。

整个事情都被一个 SerialAccessor 类包装起来,它的析构函数想要调用 close()。但是,close() 未标记为 __THROW,因此 lint 提示未捕获异常,这在析构函数中是一件坏事。

问题是:要捕获的正确类型是什么,因为它不是已知的标准类之一?

这没有帮助,这里的 lint 指出“...”没有被捕获:

#include <unistd.h>

try
{
close (fileHandle);
}
catch(...)
{ }

无论如何,我宁愿捕捉一个合适的类/类型而不是使用“...”。

unistd 说:

/* Close the file descriptor FD.

This function is a cancellation point and therefore not marked with
__THROW. */
extern int close (int __fd);

最佳答案

close() 不会抛出 C++ 异常:它在成功时返回 0,在发生错误时返回 -1。

如果返回 -1,那么您必须检查 errno 以了解出了什么问题 (http://linux.die.net/man/2/close)

关于c++ - close() 抛出什么异常类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23950669/

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