Python requests发起HTTP请求抛异常如何隐藏traceback回溯信息
方案1:使用try-except主动捕获异常(最推荐)
该方案不会影响全局异常处理逻辑,仅针对你需要处理的异常做自定义输出,是最稳妥的实现方式。修改后完整代码如下:
import requests import sys def get_headers_if(response): if response.status_code == 200: headers = response.headers print("该URL的请求头:", response.url, "为:", headers) else: raise Exception("非预期响应 (%s: %s)." % (response.status_code, response.reason)) response_url = requests.get("http://wikipedia.org") response_url_2 = requests.get("http://google.com/thehearthisflat") try: get_headers_if(response_url) get_headers_if(response_url_2) except Exception as e: # 仅打印自定义异常信息,不输出traceback print(e) # 如需异常退出可开启下行代码 # sys.exit(1)
方案2:全局关闭traceback输出
如果你不想调整调用逻辑,可以在代码开头修改Python全局traceback输出限制,设置为0后所有未捕获的异常都不会输出回溯信息:
import requests import sys # 全局关闭traceback输出,调试代码时可注释该行查看回溯信息 sys.tracebacklimit = 0 def get_headers_if(response): if response.status_code == 200: headers = response.headers print("该URL的请求头:", response.url, "为:", headers) else: raise Exception("非预期响应 (%s: %s)." % (response.status_code, response.reason)) response_url = requests.get("http://wikipedia.org") response_url_2 = requests.get("http://google.com/thehearthisflat") get_headers_if(response_url) get_headers_if(response_url_2)
注意:该配置全局生效,会导致所有未捕获的异常都不显示回溯信息,不利于后续代码调试,更推荐使用第一种方案。
内容的提问来源于stack exchange,提问作者Jose Antonio Piedehierro Arias
相关产品推荐
相关产品推荐

