现在我使用asyncio创建TCP服务器。
我想在我的代码中添加异常错误处理。 (如下所示)
try:
data = await reader.read(SERVER_IO_BUFFER_SIZE)
except SomeError:
#error handle
所以,我看一下asyncio官方文档。
但我无法找到有关可能发生的错误的任何信息。
(链接:https://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamReader.read)
如何获取可能出现的错误信息?
答案 0 :(得分:1)
可能发生的确切错误取决于StreamReader
后面的流的类型。与套接字通信的实现将引发IOError
,而从数据库读取数据的实现可能会引发一些特定于数据库的错误。
如果您正在处理网络,例如通过asyncio.open_connection
或asyncio.start_server
,您可以期待IOError
及其子类的实例。换句话说,请使用except IOError as e
。
此外,如果协程被取消,您可以在任何asyncio.CancelledError
获得await
。您可能不希望处理该异常 - 只是让它传播,并确保使用适当的finally
子句或with
上下文管理器来确保清理。 (无论CancelledError
如何,最后一部分都是个好主意。)