[英]IOException vs. TimeoutException
假设您设计了一个System.IO.Stream
扩展MyStream
其Read
方法可以超时,您更愿意抛出哪种异常类型:
System.IO.IOException
(例如System.Net.Sockets.NetworkStream
)或System.TimeoutException
(例如System.IO.Ports.SerialPort
)或如果异常是Stream
将“超时”,那么我个人会使用TimeoutException
。 如果这是根本原因,这是非常清楚的,并且非常合适。
IOException
由NetworkStream
,但具有不同的含义。 在这种情况下,通常是因为底层套接字已关闭,这阻止了读/写的发生......
您使用TimeoutException
; 它最准确地传达了实际发生的情况。
IOException
更像是一个通用异常; 如果在读取没有特定异常的Stream
的底层后备存储时发生了某些事情,那么我希望IOException
。
TimeoutException
是这里的标准,所以去吧。
当网络流超时时, IOException.InnerException
是SocketException
, IOException.InnerException.SocketErrorCode
是SocketError.TimedOut
。
我希望它只是抛出一个 TimeoutException 这样我就不必测试这种奇怪的情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.