gpt4 book ai didi

python - python 异常包含的 errnos 是否与 "linux/errno.h"中的 errnos 相同?

转载 作者:太空狗 更新时间:2023-10-29 12:20:01 30 4
gpt4 key购买 nike

据我所知,python的异常返回的errnos大部分与“linux/errno.h”中的errnos相同。但有时,事情并不像我期望的那样:

例如,当一个socket连接抛出一个socket.timeout异常时,它返回的errno应该是110,然而它的errno总是None:

try:
address = ('8.8.8.8', 12345)  
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(1)
s.connect(address)  
except EnvironmentError as e:
print e.errno # None
print e.strerror # "time out"

其次,当抛出地址相关的异常时,errno会是负数,但linux/errno.h中的errnos在1到133之间:

try:
address = ('xxxxxxx', 12345)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(address)
except socket.gaierror, v:
print v[0] # -5

在这种情况下,将打印 -5。

我对所有这些错误感到很困惑。 :(

最佳答案

只有 OSError 和 IOError 带有 errno 值。 socket.gaierror 将返回一个 getaddrinfo(3) 错误代码。其他异常通常只是携带字符串。代码在套接字模块中。 -5 是 socket.EAI_NODATA,表示“指定的网络主机存在,但没有定义任何网络地址”。

关于python - python 异常包含的 errnos 是否与 "linux/errno.h"中的 errnos 相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12550379/

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