当调用 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
,这最后一部分是个好主意。)
现在我用 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
,这最后一部分是个好主意。)