3 回答

TA贡献1963条经验 获得超6个赞
这是因为该on_message
函数是由网络线程调用的,并且它将将该调用包装在一个try
块中以阻止错误on_message
停止该线程。
如果您想出错以停止应用程序,那么您应该使用自己的try
块on_message
并进行适当的操作。

TA贡献1798条经验 获得超7个赞
对于遇到这个问题并想知道为什么 mqtt 回调中的所有异常都没有抛出或至少不可见的任何人:与 paho 的 python2 版本相比,客户端已经捕获了调用用户集回调时发生的所有异常职能。然后将此捕获的输出输出到 on_log 回调函数。如果这不是由用户实现的,将没有可见的输出。所以只需添加
def on_log(client, userdata, level, buff):
print(buff)
mqttc.on_log = on_log
到您的代码,打印出异常。

TA贡献1893条经验 获得超10个赞
您可以使用try+捕获错误expect,然后使用回溯手动打印错误消息和指向错误源的指针。与使用 on_log 函数相比,这将为您提供模式详细信息。
import traceback
def on_message(client, userdata, msg):
try:
do_something(msg)
except:
traceback.print_exc()
quit(0)
没有找到匹配的内容?试试慕课网站内搜索吧
添加回答
举报