烦人的线程异常,有啥办法可以禁用它们?

Posted

技术标签:

【中文标题】烦人的线程异常,有啥办法可以禁用它们?【英文标题】:annoying thread exceptions and is there any way to disable them?烦人的线程异常,有什么办法可以禁用它们? 【发布时间】:2021-11-06 19:42:50 【问题描述】:

我正在用 python 编写一个程序来检查我的 cookie 中的各种请求,它使用请求和线程,一切都很好但是 - 我得到了让我很恼火的线程异常,我一直在寻找一种方法来禁用它们或至少让它们变小一段时间并且没有找到任何方法,如果有人可以提供帮助将不胜感激(对不起我的英语不好)

它所做的请求:

r = req.get("https://api.roblox.com/users/account-info")
robux_balance = r.json()['RobuxBalance']

线程异常截图:

这是唯一因某种原因出错的请求。

【问题讨论】:

请发布文字,而不是图片 - 请参阅How to Ask。 但是你想要发生什么?要停止异常,只需删除该行,但我猜您需要响应中的一些数据。 【参考方案1】:

您可以将代码放入 try-except 并在出错时通过

r = req.get("https://api.roblox.com/users/account-info")

try:
   robux_balance = r.json()['RobuxBalance']
except KeyError:
   pass

【讨论】:

【参考方案2】:

引发此异常是因为您的数据字典没有密钥 RobuxBalance。您应该在直接访问之前检查密钥是否存在。我会使用r.json().get('RobuxBalance', None),而不是直接按键访问。

【讨论】:

【参考方案3】:

这是您的代码中的错误,与线程无关。您应该检查密钥是否在您的请求回复中。

r = req.get("https://api.roblox.com/users/account-info")
if 'RobuxBalance' in r.json():
    robux_balance = r.json()['RobuxBalance']
else:
    do something like retry

【讨论】:

【参考方案4】:

错误消息显示结果字典中不存在“RobuxBalance”。 两个建议:

在代码中添加“try...except...”; 请改用robux_balance = r.json().get('RobuxBalance')

【讨论】:

以上是关于烦人的线程异常,有啥办法可以禁用它们?的主要内容,如果未能解决你的问题,请参考以下文章

使用并行线程填充集合有啥危险吗?

有没有办法强制程序只使用 1 个线程?

我不知道我的一个变量有啥问题。[线程“main”java.util.UnknownFormatConversionException 中的异常:Conversion = 'm']

Java中的线程池有啥用?

线程池中的可运行与线程内和线程池中的可运行有啥区别

Java多线程问题--线程运行时出现异常的解决办法