📅  最后修改于: 2023-12-03 14:56:41.792000             🧑  作者: Mango
在编写程序时,经常会使用等待操作来处理耗时任务或异步操作。例如,等待网络请求响应、等待文件读写、等待用户输入等等。然而,等待操作可能会导致异常的发生,因为等待过程中可能会发生一些不可预测的错误。
try:
result = await asyncio.wait_for(long_running_task(), timeout=5)
except asyncio.TimeoutError:
print("Task timed out!")
try:
result = await asyncio.wait_for(long_running_task(), timeout=5)
except asyncio.CancelledError:
print("Task cancelled!")
try:
result = await long_running_task()
except SomeError:
print("An error occurred while waiting!")
try:
result = await long_running_task()
except SomeError:
print("An error occurred while waiting!")
try:
result = await asyncio.wait_for(long_running_task(), timeout=5)
except asyncio.TimeoutError:
print("Task timed out!")
# 在等待过程中检查是否被取消
async def long_running_task():
while True:
await asyncio.sleep(1)
if asyncio.current_task().cancelled():
break
# 取消等待操作
task = asyncio.ensure_future(long_running_task())
await asyncio.sleep(5)
task.cancel()
等待操作是编写程序时常用的操作之一,但在等待过程中可能会发生异常,程序员需要注意这些异常并进行处理。常见的等待异常包括超时异常、中断异常和其他异常。对于这些异常,可以通过捕捉异常、设定超时时间和取消等待操作等方法进行处理。