Python中requests.get的ConnectionRefusedError无法捕获问题求助
问题分析与解决
核心问题
你看到的ConnectionRefusedError根本不是你的requests.get请求抛出的,而是VSCode的debugpy调试器无法连接到调试端口导致的异常。这个异常发生在脚本执行之前的调试启动阶段,完全不在你写的try-except代码块的执行范围内,所以你的自定义捕获逻辑根本不会触发。
验证方式
直接在终端里用命令运行脚本,不要用VSCode的调试模式:
python your_script_name.py
如果是正常的Kraken API连接错误,你的requests.exceptions.ConnectionError捕获逻辑会正常工作。
调试器异常的解决办法
- 检查VSCode的调试配置文件
.vscode/launch.json,确认port配置没有被其他进程占用,或者直接改成一个未使用的端口(比如5678之外的端口)。 - 关闭所有VSCode窗口和Python进程,重新打开后再尝试调试,避免旧的调试进程残留占用端口。
- 如果不需要调试,直接在终端运行脚本即可避开这个问题。
补充:你的HTTP请求代码的潜在问题
即使解决了调试器的问题,你的代码还有一个隐患:如果requests.get抛出异常,后面的print(response.status_code)会因为response未定义而报错。应该把后续处理逻辑也放到try块里,或者在except里处理后退出脚本:
import requests import sys params = { "pair": "xbtusd", "interval": 5 } url = "https://api.kraken.com/0/public/OHLC" response = None try: response = requests.get(url=url, params=params) print(response.status_code) if response.status_code in (200, 201, 202): print(response.json()) except requests.exceptions.ConnectionError as e: print(f"连接错误: {type(e).__name__} - {e}") except requests.exceptions.RequestException as e: print(f"请求异常: {type(e).__name__} - {e}") except Exception as e: print(f"通用异常: {type(e).__name__} - {e}") except: print(f"未捕获的异常: {sys.exc_info()[0]}")
内容的提问来源于stack exchange,提问作者OJNSim
相关产品推荐
相关产品推荐

