超时错误不正确

2024-09-30 04:38:44 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我的问题是,我不明白为什么有时我不能在我的flash_serial_buffer方法中捕捉TimeOutError。在

当我运行我的程序时,我有时会得到一个TimeOutError,但我不明白为什么。我指示信号处理程序的代码和未捕获TimeOutError的方法。有人知道这可能发生吗?在

这是我的信号处理程序定义和回调函数的代码。 基本上,如果一个超时被称为处理程序,则会引发超时。在

def signal_handler(signum, frame):
    print "PUM"
    raise TimedOutError("Time out Error")

signal.signal(signal.SIGALRM, signal_handler)

如果没有应答,则刷新串行缓冲区将阻塞

answer = xbee.wait_read_frame()

这样做的目的是清除缓冲区中的所有内容,直到不再有消息。当没有更多的消息时,它只等待SIGALRM爆炸并引发超时错误。在

^{pr2}$

有人能看到TimeOutError可能被引发,但没有被{}语句捕获的情况吗?在

我忘了把我的错误类定义放在这里:

class TimedOutError(Exception):
pass

更新:

我又能重复这个错误,我真的不明白为什么try没有捕捉到错误。在

INFO:root:     Flashing serial buffer
PUM
Traceback (most recent call last):
  File "/home/ls/bin/pycharm-community-4.0.6/helpers/pydev/pydevd.py", line 1458, in trace_dispatch
    if self._finishDebuggingSession and not self._terminationEventSent:
  File "/home/ls/PiProjects/Deployeth/HW-RPI-API/devices.py", line 42, in signal_handler
    raise TimedOutError("Time out Error")
TimedOutError: Time out Error  

Tags: 方法代码程序signaltimebuffer错误serial
1条回答
网友
1楼 · 发布于 2024-09-30 04:38:44

在本例中,我建议您替换try,除此代码外

    try:
        signal.alarm(1)  # seconds
        while True:
            answer = xbee.wait_read_frame()
            signal.alarm(1)
            logging.error("    Mixed messages in buffer")
    except:
        signal.alarm(0)  # seconds
        logging.error("    No more messages in buffer")

Ps:你不需要在尝试中包括try(无论发生什么错误),除了stalations。

相关问题 更多 >

    热门问题