为了账号安全,请及时绑定邮箱和手机立即绑定

未引发 Python 异常

未引发 Python 异常

慕丝7291255 2021-06-25 14:55:44
我正在使用一个 python gui 应用程序,我对它进行了分叉、修改和调试(对于自定义游戏控制器,如果您必须知道的话)。该应用程序启动一个子进程来处理与 arduino 的通信,该子进程启动各种函数来处理特定操作。我正在尝试在特定函数中构建 TimeoutError 异常,以便为我提供有关 arduino 未响应的进程的更多信息,但异常似乎没有得到适当的引发/处理(阅读:我不知道怎么做)。这是对函数的调用(仍在子进程中):# STATE = Perform CNIAif n_program_state == 4:    mQ.put((0, 'Starting CNIA...'))    try:        cnia(ser, conn, vessel) #This is the function that should raise the TimeoutError    except TimeoutError:        mq.put((1,'exception raised'))        mq.put((1, ' '.join(err.args)))        time.sleep(5)        pass    mQ.put((0, 'CNIA Complete'))    n_program_state = 5这些是 cnia 函数的前几行,我在其中添加了一个假超时错误:def cnia(ser, conn, vessel):    f_cnia_repeat = True    raise TimeoutError("clnr: fake timeout2")    ...当我运行程序并触发子进程时,消息队列一直到“启动 CNIA”,然后子进程挂起。我希望它引发异常,然后打印我指定的错误消息 - 我错过了什么?为笨拙的代码道歉,原作者声称没有专业知识,而我可能更糟。
查看完整描述

2 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

err.args 可能正在创建一个未处理的异常。尝试添加 err 对象:except TimeoutError as err:


查看完整回答
反对 回复 2021-06-29
?
智慧大石

TA贡献1946条经验 获得超3个赞

我不太明白你的代码,但我在这里可以解释的是,你甚至没有接触到这个cnia函数。尝试在print之前添加一个f_cnia_repeat = True,看看它是否被调用


查看完整回答
反对 回复 2021-06-29
  • 2 回答
  • 0 关注
  • 157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信