चूंकि ByteArrayOutputStream
बस स्मृति को लिखता है, IOException
कभी नहीं होना चाहिए। हालांकि, OutputStream
इंटरफ़ेस के अनुबंध की वजह से, सभी स्ट्रीम ऑपरेशंस IOException
को उनके throws
खंड में परिभाषित करते हैं।जावा: IOException जब एक ByteArrayOutputStream को लिखते हैं?
यह कभी भी होने वाली IOException
"संभाल" करने का सही तरीका क्या है? बस एक खाली try-catch
ब्लॉक में संचालन लपेटें?
या क्या कोई वास्तविक परिस्थितियां हैं जहां ByteArrayOutputStream
अपवाद फेंक सकता है?
(यह भी देखें: How can I handle an IOException which I know can never be thrown, in a safe and readable manner?)
संपादित
जॉन बताते हैं के रूप में, ByteArrayOutputStream
write
तरीकों में परिभाषित करता है पर एक throws
खंड की घोषणा नहीं करता - हालांकि, यह OutputStream
से write(byte[])
इनहेरिट करती है, और वह IOEXception
फेंक देता है (काफी विचित्र है कि BAOS
इस विधि को ओवरराइड नहीं करेगा, क्योंकि यह सुपरक्लास संस्करण को प्रतिस्थापित कर सकता है - जो एक समय में एक बाइट लिखता है - एक बहुत अधिक कुशल arraycopy
कॉल के साथ)
'पास पर IOException() अपने कोड संयोजित करते समय' एक गलती किया जाना चाहिए - खासकर जब जावाडोक यह कहते हैं, " इसका कोई प्रभाव नहीं है " – irreputable
+1 धन्यवाद! मैंने अभी देखा है कि 'ByteArrayOutputStream.write' वास्तव में' IOException' घोषित नहीं करता है - लेकिन जब भी मैं इसका उपयोग करता हूं तब ग्रहण एक अनचाहे अपवाद के बारे में शिकायत करता है ... अजीब। –
@ जेन: क्या आप वाकई एक चर * घोषित * पर 'बाइटएरे ऑटपुटस्ट्रीम' के रूप में कॉल कर रहे हैं? –