2011-12-14 2 views
5

निम्नलिखित कोड में आउटपूटस्ट्रीम के लिए करीबी फ़ंक्शन एक IOException अपवाद फेंक देता है जिसे मुझे पकड़ना चाहिए। मेरा सवाल है क्या मुझे इसे संभालने की ज़रूरत है? चूंकि मैं मोबाइल उपकरणों के साथ काम कर रहा हूं और मैं यह सुनिश्चित करना चाहता हूं कि मैं उन सभी संसाधनों को मुक्त कर दूं जो मैं उपयोग करता हूं, या मैं अपवाद को सुरक्षित रूप से अनदेखा कर सकता हूं।क्या मुझे आउटपुटस्ट्रीम क्लोज़() फ़ंक्शन द्वारा निकाले गए IOException को संभालने या अनदेखा करने की आवश्यकता है?

//... 
OutputStream output = null; 
try { 
    output = connection.getOutputStream(); 
    output.write(query.getBytes(charset)); 
} finally { 
    if (output != null) try { 
     output.close(); 
    } catch (IOException e) { 
     // Do i need to do something here ? 
    } 
} 
+0

आपको उन अपवादों को कभी अनदेखा नहीं करना चाहिए जिन्हें फेंक दिया जा सकता है, जावा 7 में नया प्रयास करें, यह कोड थोड़ा सा दिखता है: http://docs.oracle.com/javase/ ट्यूटोरियल/आवश्यक/अपवाद/tryResourceClose.html –

+0

आप इसके साथ क्या कर सकते हैं? – DaveRlz

+0

हाँ, उसने हमेशा मुझे अपना सिर खरोंच कर दिया है। मैं हमेशा जो करता हूं वह सिर्फ त्रुटि को लॉग करता है, ताकि अगर ऐसा होता है तो मुझे पता है कि यह किया गया है- लेकिन मुझे इस बात की कोई जानकारी नहीं है कि इस स्थिति में ठीक होने के लिए क्या करना होगा (यदि कुछ भी हो)। –

उत्तर

7

अगर बंद नहीं होता है, तो आप क्या कर सकते हैं?

केवल एक चीज जो आप कर सकते हैं वह अपवाद लॉग है, और @mprabhat ने सुझाव दिया है कि आप जीसी को गति देने के लिए संदर्भ को शून्य सेट कर सकते हैं।

+0

क्या फ्लश() को कॉल करना समझ में आता है? या यह प्रदर्शन नहीं किया जा सकता है। – Jimmy

+0

मुझे लगता है कि IOException को भी – stivlo

+0

फेंक देगा, मुझे लगता है कि यह थोड़ा समझने के बाद, पहले फ्लश कॉल करने के बाद यह समझ में आता है। – Jimmy

0

सबसे बुरी स्थिति में, आप एक चेतावनी दे सकते हैं। लेकिन आम तौर पर, पहले से बंद सत्र को बंद करने का प्रयास करते समय ऐसे अपवाद फेंक दिए जाते हैं। इस मामले में, आपको कुछ भी करने की आवश्यकता नहीं है।

3

जावा दस्तावेज विवरण नहीं है जिस पर सभी अलग-अलग स्थितियां IOException फेंक देंगी, इसलिए कोई भी ऐसा नहीं कर सकता है।

कम से कम आप OutputStream का संदर्भ शून्य के लिए सेट कर सकते हैं और अपवाद लॉग कर सकते हैं।

+0

अच्छा विचार, शून्य +1 के संदर्भ को सेट करना समझ में आता है – stivlo

0

प्रभावी जावा में जोशुआ ब्लोच ने इसे उन अपवादों में से एक के रूप में उल्लेख किया है जिन्हें आप अनदेखा करना चाहते हैं। आम तौर पर, वह कहता है, आप उन्हें लॉगिंग करने के अलावा अपवादों के साथ और अधिक करना चाहते हैं।

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