Spotipy已捕获SpotifyException仍抛出异常的问题排查
问题根因
你的try-except逻辑结构本身没有错误,问题出在异常类的引用方式不对,导致写的捕获规则根本匹配不到实际抛出的异常。SpotifyException是spotipy模块顶层定义的异常类,你代码里写的sp.SpotifyException是从初始化好的Spotify客户端实例上取的属性,和实际接口报错时抛出的异常类不是同一个对象,所以捕获逻辑完全不生效,才会出现异常没被拦住、提示处理异常期间又触发新报错的现象。
修复方案
直接引用spotipy模块下的异常类做匹配即可,不需要从客户端实例上取,修改后的可运行代码如下:
import spotipy from spotipy.oauth2 import SpotifyOAuth sp = spotipy.Spotify(auth_manager=SpotifyOAuth(client_id="...", client_secret="...", redirect_uri="http://localhost/", scope="playlist-modify-public", requests_timeout=5)) try: track = sp.track('7IaxPh0ttHTsJ4rVPPiQ9V', 'NL') # 直接匹配模块下的SpotifyException,不要用sp.SpotifyException except spotipy.SpotifyException: x = 0
如果觉得每次写spotipy.SpotifyException麻烦,也可以在导包的时候直接把异常类导入:
from spotipy import SpotifyException
后续except块直接写except SpotifyException:即可。
报错提示说明
你看到的During handling of the above exception, another exception occurred不是说你在except块里写的代码出了错,本质是解释器尝试按你写的规则匹配抛出的异常时,发现类型对不上,最终抛出了未捕获异常的提示,和异常处理块的嵌套、缩进逻辑没有关系。
内容的提问来源于stack exchange,提问作者Dirk
相关产品推荐
相关产品推荐

