gpt4 book ai didi

python - 如何在 Python 中处理 ConnectionError

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

目前我遇到以下代码的NameError 问题:

try:
# some network programming raising an exception
except ConnectionError:
# some error handling

这是行不通的,因为您必须从某个模块中导入 ConnectionError,这在文档中没有提及(也许我只是瞎了眼?)。我只找到了 this , 但它指的是另一个请求库。

最佳答案

标准库中预期“普遍可用”的所有异常都是内置的,并记录在 Built-in Exceptions 中图书馆引用的一部分。

在 3.3 中,包括这个:

exception ConnectionError

A base class for connection-related issues.

Subclasses are BrokenPipeError, ConnectionAbortedError, ConnectionRefusedError and ConnectionResetError.

但这是内置的。所以这应该有效:

except ConnectionError:

在 3.0-3.2 中,没有ConnectionError这样的异常。 stdlib 中没有任何内容引发该名称的任何内容。因此,尝试处理它是没有意义的。 (有关如何在 3.2 和 3.3 之间重组 OSErrorIOError 的说明,请参阅 PEP 3151。)

ConnectionError 的 3.2 等效项是具有特定 errno 值的 OSError。所以,你想要的是这样的:

except OSError as e:
if e.errno not in (EPIPE, ESHUTDOWN, ECONNABORTED, ECONNREFUSED, ECONNRESET):
raise
# whatever you wanted to do for ConnectionError.

同时,在未来,当你不知道你需要处理什么样的异常时,它很容易测试。首先,编写一些测试代码,通过记录异常类型的限定名称来处理任何 异常。然后从日志中取出类型并在您的实际代码中使用它。

try:
code_that_raises()
except Exception as e:
print(type(e), type(e).__qualname__, whatever_else_looks_useful(e))

关于python - 如何在 Python 中处理 ConnectionError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19192891/

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