MST

星途 面试题库

面试题:JavaScript异步生成器与错误处理

在一个使用异步生成器的函数中,有多个异步操作,如数据库查询、文件读取等。请描述如何在异步生成器中进行全面的错误处理,包括生成器函数内部的错误以及在迭代生成器时可能出现的错误,并给出相应的代码示例。
45.9万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

在异步生成器中进行全面的错误处理,可以从以下两方面入手:

生成器函数内部的错误处理

在异步生成器函数内部,对每个异步操作使用 try - catch 块来捕获错误。

迭代生成器时的错误处理

在迭代异步生成器时,同样使用 try - catch 块来捕获可能抛出的错误。

以下是代码示例:

import asyncio


async def async_generator():
    try:
        # 模拟数据库查询
        await asyncio.sleep(1)
        result1 = "数据库查询结果"
        yield result1
        # 模拟文件读取
        await asyncio.sleep(1)
        result2 = "文件读取结果"
        yield result2
    except Exception as e:
        print(f"生成器内部错误: {e}")


async def main():
    try:
        async for value in async_generator():
            print(value)
    except Exception as e:
        print(f"迭代生成器时的错误: {e}")


if __name__ == "__main__":
    asyncio.run(main())

在上述代码中:

  1. async_generator 函数是一个异步生成器,内部对异步操作进行了 try - catch 块包裹以处理内部错误。
  2. main 函数中,通过 async for 迭代异步生成器,并使用 try - catch 块捕获迭代过程中可能出现的错误。