未引发 Python 异常

我正在使用一个 python gui 应用程序,我对它进行了分叉、修改和调试(对于自定义游戏控制器,如果您必须知道的话)。该应用程序启动一个子进程来处理与 arduino 的通信,该子进程启动各种函数来处理特定操作。我正在尝试在特定函数中构建 TimeoutError 异常,以便为我提供有关 arduino 未响应的进程的更多信息,但异常似乎没有得到适当的引发/处理(阅读:我不知道怎么做)。这是对函数的调用(仍在子进程中):


# STATE = Perform CNIA

if 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”,然后子进程挂起。我希望它引发异常,然后打印我指定的错误消息 - 我错过了什么?为笨拙的代码道歉,原作者声称没有专业知识,而我可能更糟。


慕丝7291255
浏览 158回答 2
2回答

Smart猫小萌

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

智慧大石

我不太明白你的代码,但我在这里可以解释的是,你甚至没有接触到这个cnia函数。尝试在print之前添加一个f_cnia_repeat = True,看看它是否被调用
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python