当调用 asyncio.StreamReader.read() 时,会发生哪种类型的错误?

when asyncio.StreamReader.read() called, which type of Error occur?

现在我用 asyncio 制作 TCP 服务器。

我想在我的代码中添加异常错误处理。 (如下图)

    try:
        data = await reader.read(SERVER_IO_BUFFER_SIZE)
    except SomeError:
        #error handle

所以,我看asyncio官方文档。

但是我找不到任何关于可能发生的错误的信息。

(link: https://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamReader.read)

如何获取有关可能发生的错误的信息?

可能发生的确切错误取决于 StreamReader 后面的流类型。与套接字对话的实现将引发 IOError,而从数据库读取数据的实现可能会引发一些特定于数据库的错误。

如果您正在处理网络,例如通过 asyncio.open_connection or asyncio.start_server,您可以期待 IOError 及其子类的实例。换句话说,使用 except IOError as e.

另外,如果协程被取消,你可以在任意await处得到asyncio.CancelledError。您可能不想处理该异常 - 让它传播,并确保使用适当的 finally 子句或 with 上下文管理器来确保清理。 (不管 CancelledError,这最后一部分是个好主意。)