Python 继续使用 request 库处理 gaierror



我正在使用python的请求库,我希望每当发生此('Connection aborted.', gaierror(-2, 'Name or service not known'))错误时,代码都能继续。由于某种原因,我的 try catch 被忽略了,并且该错误导致应用程序无论如何都会退出。

我的代码:

try:
self.doSomething();
except requests.exceptions.ConnectionError as e:
self.logger.error("A connection error occured.");
self.logger.error(str(e) + "n");
except Exception as e:
self.logger.error("An error occured.");
self.logger.error(str(e) + "n");

如果错误是socket.gaierror,它是OSError的一个子类,它是Exception的子类,那么应该执行except Exception子句。

try/except 是 Python 中一个强大的工具,但是,如果不小心使用,它很容易隐藏错误。有时最好的方法是删除 try/except 并读取完整的回溯。另一种效果很好的方法是记录完整的回溯,不幸的是,对于 Python 新手来说,随处可见这样做错的例子。要获得完整的回溯,您需要删除 try/except,或使用

import traceback
try:
risky_call()
except Exception:
print(traceback.print_exc())

或者,如果您配置了记录器

import logging
try:
risky_call()
except Exception:
logging.exception('')

最新更新