假設你設計一個System.IO.Stream
擴展MyStream
其Read
方法可能會超時,這異常的類型,你寧願拋出:IOException異常與TimeoutException異常
System.IO.IOException
(如如System.Net.Sockets.NetworkStream
)或System.TimeoutException
(如如System.IO.Ports.SerialPort
)或- 別的東西?
假設你設計一個System.IO.Stream
擴展MyStream
其Read
方法可能會超時,這異常的類型,你寧願拋出:IOException異常與TimeoutException異常
System.IO.IOException
(如如System.Net.Sockets.NetworkStream
)或System.TimeoutException
(如如System.IO.Ports.SerialPort
)或如果例外情況是Stream
將「超時」,那麼我會親自使用TimeoutException
。這是非常明確的,如果這是潛在的原因,則非常合適。
IOException
被NetworkStream
使用,但是具有不同的含義。在這種情況下,通常是因爲底層套接字已關閉,從而防止發生讀/寫操作...
您使用TimeoutException
;它最準確地傳達了實際發生的事情。
IOException
更多的是一種通用的例外;如果在閱讀Stream
的底層支持存儲時發生了某些特定異常,那麼我希望可以使用IOException
。
TimeoutException
是這裏的標準,所以請遵循這一點。
就我個人而言,我會模仿現有的.NET類正在做什麼;這兩種選擇都可以證明是有效的,所以請與人們可能已經熟悉的選項一致。 –
@MichaelEdenfield我認爲這就是tamberg的觀點 - BCL中有多個例外,乍一看似乎是合適的。 –