IOException与TimeoutException

时间:2011-11-22 17:20:29

标签: c# .net

假设您设计了一个System.IO.Stream扩展名MyStream,其Read方法可以超时,您宁愿抛出哪种异常类型:

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

3 个答案:

答案 0 :(得分:3)

如果例外情况是Stream将“超时”,那么我个人会使用TimeoutException。这是非常明确的,如果这是根本原因则非常合适。

IOException使用

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

答案 1 :(得分:1)

你使用TimeoutException;它最准确地传达了实际发生的事情。

IOException更像是一个通用例外;如果在读取没有特定例外的Stream的基础后备存储时发生了某些事情,那么我期望IOException

TimeoutException是此处的标准,所以请继续使用。

答案 2 :(得分:-1)

网络流超时时,IOException.InnerExceptionSocketException,而IOException.InnerException.SocketErrorCodeSocketError.TimedOut

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