在 Python 中处理 queue.Empty 异常

Python 中使用 try/except 语句来处理队列的空异常。 我们可以在 try 块中使用 get() 方法并在 except 块中捕获 queue.Empty 异常。

import queue

q = queue.Queue()

q.get(False)

try:
    item = q.get(False)

    # 👉️ 在这里处理业务

    # 👇️ 任务完成
    q.task_done()
except queue.Empty:
    print('queue.Empty exception')
    # 👉️ 处理空队列异常
    pass

Queue.get 方法从队列中移除并返回一个项目。

我们将 False 传递给该方法以使其非阻塞。

如果队列中的项目不能立即可用,则该方法会引发 queue.Empty 异常。

我们可以在 try 块中完成所有必要的工作,并在最后调用 Queue.task_done 方法以指示任务已完成。

我们可以使用 task_done() 方法告诉队列在每次调用 get() 方法获取任务后任务已完成。

我们还可以通过使用 else 块来简化这一点。

import queue

q = queue.Queue()

try:
    item = q.get(False)

    # 👉️ 在这里处理业务

except queue.Empty:
    print('queue.Empty exception')
    # 处理空队列异常
    pass
else:
    # 👇️ 处理空队列异常
    q.task_done()

在 Python 中处理 queue.Empty 异常

如果我们不使用异常处理的话,队列空异常的报错如下所示。

try/except 语句有一个可选的 else 子句。

只有在 try 块没有引发异常时才运行 else 块。