Python遍历机场列表查询气象数据时如何忽略异常继续执行后续项
解决方案
你之前尝试的try except未生效,大概率是异常捕获范围错误、异常类型不匹配,或是同步睡眠方法阻塞了异步事件循环导致的,可按以下方案修改代码:
import asyncio for airport_code in aeropuertos: try: # 调用API获取机场气象信息 finalizado = MetarBot.metarbot.Taf(airport_code) await ctx.send(finalizado) except Exception as e: # 此处可先打印e查看具体的异常类型,后续替换为精准的异常类,避免误吞其他错误 await ctx.send(f"机场代码*{airport_code}*请检查拼写!") # 用异步睡眠替换同步睡眠,避免阻塞Discord机器人的事件循环 await asyncio.sleep(0.5)
关键说明
- 异常捕获逻辑要完整包裹
Taf()方法调用行,才能捕获到无效机场代码触发的接口错误 - 异步场景下禁止使用
time.sleep这类同步阻塞方法,会导致整个机器人进程卡住,看起来像是程序终止 - 确认API抛出的具体异常类型后,可把
Exception替换为对应的异常类,比如AVWX库常见的InvalidRequestError、StationNotFoundError等,实现更精准的错误处理
内容的提问来源于stack exchange,提问作者Federico Perez Diduch
相关产品推荐
相关产品推荐

