我正在使用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('')