目前我有一个问题,我得到一个NameError
为以下代码:
try:
# some network programming raising an exception
except ConnectionError:
# some error handling
字符串
这不起作用,因为您必须从某个模块导入ConnectionError
,这在文档中没有提到(也许我只是瞎了眼?)。我找到的都是this,但它引用了另一个请求库。
目前我有一个问题,我得到一个NameError
为以下代码:
try:
# some network programming raising an exception
except ConnectionError:
# some error handling
字符串
这不起作用,因为您必须从某个模块导入ConnectionError
,这在文档中没有提到(也许我只是瞎了眼?)。我找到的都是this,但它引用了另一个请求库。
2条答案
按热度按时间7rtdyuoh1#
标准库中预期“普遍可用”的所有异常都是内置的,并在库参考的“内置异常”部分进行了记录。
在3.3中,包括这一个:
ConnectionError
与连接相关的问题的基类。
子类包括
BrokenPipeError
、ConnectionAbortedError
、ConnectionRefusedError
和ConnectionResetError
。但这是内置的。这样应该可以:
字符串
在3.0-3.2中,* 不存在 *
ConnectionError
这样的例外。在stdlib中没有任何东西提到这个名字。所以没有必要去处理它。(关于OSError
和IOError
在3.2和3.3之间如何重组的解释,请参见PEP 3151。)ConnectionError
的3.2等效值是OSError
,具有某些errno
值。所以,你想要的是这样的:型
同时,在将来,当您不知道需要处理哪种异常时,测试非常容易。首先,编写一些测试代码,通过记录异常类型的限定名来处理 any 异常。然后从日志中取出类型并在真实的代码中使用。
型
i7uaboj42#
我也遇到过类似的问题。我使用的是python 3.11,你使用的代码块没有导入,因为
ConnectionError
是python内置的。然而,例外并没有被抓住。原来
requests
2.31.0使用了自己的ConnectionError
(!一旦我的except子句使用了requests.exceptions.ConnectionError
,它就对我起作用了。