繁体   English   中英

IOException 与 TimeoutException

[英]IOException vs. TimeoutException

假设您设计了一个System.IO.Stream扩展MyStreamRead方法可以超时,您更愿意抛出哪种异常类型:

  • System.IO.IOException (例如System.Net.Sockets.NetworkStream )或
  • System.TimeoutException (例如System.IO.Ports.SerialPort )或
  • 还有什么?

如果异常是Stream将“超时”,那么我个人会使用TimeoutException 如果这是根本原因,这是非常清楚的,并且非常合适。

IOExceptionNetworkStream ,但具有不同的含义。 在这种情况下,通常是因为底层套接字已关闭,这阻止了读/写的发生......

您使用TimeoutException 它最准确地传达了实际发生的情况。

IOException更像是一个通用异常; 如果在读取没有特定异常的Stream的底层后备存储时发生了某些事情,那么我希望IOException

TimeoutException是这里的标准,所以去吧。

当网络流超时时, IOException.InnerExceptionSocketExceptionIOException.InnerException.SocketErrorCodeSocketError.TimedOut

我希望它只是抛出一个 TimeoutException 这样我就不必测试这种奇怪的情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM