2011-11-22 10 views
5

आप एक System.IO.Stream विस्तार MyStream जिसका Read विधि डिजाइन टाइम आउट कर सकते हैं मान लिया जाये, जो अपवाद प्रकार आप बल्कि फेंक होगा:IOException बनाम TimeoutException

  • System.IO.IOException (के रूप में जैसे System.Net.Sockets.NetworkStream) या
  • System.TimeoutException (के रूप में जैसे System.IO.Ports.SerialPort) या
  • कुछ और?
+2

व्यक्तिगत रूप से मैं नकल करता हूं कि मौजूदा .NET कक्षाएं क्या कर रही थीं; दोनों विकल्प तर्कसंगत रूप से मान्य हैं, इसलिए उस व्यक्ति के साथ जाएं जो लोग पहले ही परिचित हो सकते हैं। –

+2

@ माइकलएडेनफील्ड मुझे लगता है कि यह टैमबर्ग का मुद्दा है - बीसीएल में कई अपवाद हैं कि, पहली नज़र में, उचित लगते हैं। –

उत्तर

3

यदि अपवाद यह है कि Stream "टाइम आउट" पर जा रहा है, तो मैं व्यक्तिगत रूप से TimeoutException का उपयोग करूंगा। यह बहुत स्पष्ट है, और बहुत उपयुक्त है अगर वह अंतर्निहित कारण है।

IOExceptionNetworkStream द्वारा उपयोग किया जाता है, लेकिन इसका एक अलग अर्थ है। इस मामले में, यह आम तौर पर है क्योंकि अंतर्निहित सॉकेट बंद हो गया है, जो पढ़ने/लिखने से होने से रोकता है ...

1

आप TimeoutException का उपयोग करते हैं; यह वास्तव में क्या हुआ वास्तव में बताता है।

IOException एक सामान्य उद्देश्य अपवाद है; अगर Stream के लिए अंतर्निहित बैकिंग स्टोर पढ़ने के दौरान कुछ हुआ, जिसके लिए कोई विशिष्ट अपवाद नहीं है तो मुझे IOException की उम्मीद होगी।

TimeoutException यहां मानक है, इसलिए इसके साथ जाएं।

संबंधित मुद्दे